[AS3]as3中ShareObject类的应用范例
[AS3]as3中ShareObject类的应用范例
[AS3]as3中ShareObject类的应用范例
- package {
- import flash.display.Sprite;
- import flash.events.MouseEvent;
- //NetConnection、NetStream 或 SharedObject 对象报告其状态时,Flash® Player 将调度 NetStatusEvent 对象。 只有一种类型的状态事件:NetStatusEvent.NET_STATUS。
- import flash.events.NetStatusEvent;
- import flash.net.SharedObject;
- //SharedObjectFlushStatus 类为通过调用 SharedObject.flush() 方法而返回的代码提供了值。
- import flash.net.SharedObjectFlushStatus;
- import flash.text.TextField;
- //TextFieldAutoSize 类是在设置 TextField 类的 autoSize 属性时使用的常数值的枚举。
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFieldType;
- public class SharedObjectExample extends Sprite {
- private var mySo:SharedObject;
- public function SharedObjectExample() {
- buildUI();
- saveBtn.addEventListener(MouseEvent.CLICK, saveValue);
- clearBtn.addEventListener(MouseEvent.CLICK, clearValue);
- //返回对本地永久共享对象的引用,该对象只可用于当前客户端。 如果尚不存在共享对象,则此方法将创建一个共享对象。 如果传递给 getLocal() 的任何值均无效,或如果调用失败,Flash Player 将引发异常。
- mySo = SharedObject.getLocal("application-name");
- output.appendText("SharedObject loaded...\n");
- //赋给对象的 data 属性 (property) 的属性 (attribute) 集合;可以共享和存储这些属性 (attribute)。 每个特性都可以是任何 ActionScript 或 JavaScript 类型的对象(数组、数字、布尔值、字节数组、XML,等等)。
- output.appendText("loaded value: " + mySo.data.savedValue + "\n\n");
- }
- private function saveValue(event:MouseEvent):void {
- output.appendText("saving value...\n");
- mySo.data.savedValue = input.text;
- var flushStatus:String = null;
- try {
- //将本地永久共享对象立即写入本地文件。 如果不使用此方法,则 Flash Player 会在共享对象会话结束时(也就是说,在 SWF 文件关闭时,在由于不再有对共享对象的任何引用而将其作为垃圾回收时,或者在调用 SharedObject.clear() 或 SharedObject.close() 时),将共享对象写入文件。
- //参数:minDiskSpace: (default = 0) — 必须分配给此对象的最小磁盘空间(以字节为单位)。
- flushStatus = mySo.flush(10000);
- } catch (error:Error) {
- output.appendText("Error...Could not write SharedObject to disk\n");
- }
- if (flushStatus != null) {
- switch (flushStatus) {
- //指示在可以刷新之前,提示用户增加共享对象的磁盘空间。
- case SharedObjectFlushStatus.PENDING:
- output.appendText("Requesting permission to save object...\n");
- mySo.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
- break;
- //指示成功完成了刷新。
- case SharedObjectFlushStatus.FLUSHED:
- output.appendText("Value flushed to disk.\n");
- break;
- }
- }
- output.appendText("\n");
- }
- private function clearValue(event:MouseEvent):void {
- output.appendText("Cleared saved value...Reload SWF and the value should be \"undefined\".\n\n");
- delete mySo.data.savedValue;
- }
- private function onFlushStatus(event:NetStatusEvent):void {
- output.appendText("User closed permission dialog...\n");
- //info:一个对象,具有描述对象的状态或错误情况的属性
- switch (event.info.code) {
- case "SharedObject.Flush.Success":
- output.appendText("User granted permission -- value saved.\n");
- break;
- case "SharedObject.Flush.Failed":
- output.appendText("User denied permission -- value not saved.\n");
- break;
- }
- output.appendText("\n");
- mySo.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
- }
- // UI elements
- private var inputLbl:TextField;
- private var input:TextField;
- private var output:TextField;
- private var saveBtn:Sprite;
- private var clearBtn:Sprite;
- private function buildUI():void {
- // input label
- inputLbl = new TextField();
- addChild(inputLbl);
- inputLbl.x = 10;
- inputLbl.y = 10;
- inputLbl.text = "Value to save:";
- // input TextField
- input = new TextField();
- addChild(input);
- input.x = 80;
- input.y = 10;
- input.width = 100;
- input.height = 20;
- input.border = true;
- input.background = true;
- input.type = TextFieldType.INPUT;
- // output TextField
- output = new TextField();
- addChild(output);
- output.x = 10;
- output.y = 35;
- output.width = 250;
- output.height = 250;
- output.multiline = true;
- output.wordWrap = true;
- output.border = true;
- output.background = true;
- // Save button
- saveBtn = new Sprite();
- addChild(saveBtn);
- saveBtn.x = 190;
- saveBtn.y = 10;
- saveBtn.useHandCursor = true;
- saveBtn.graphics.lineStyle(1);
- saveBtn.graphics.beginFill(0xcccccc);
- saveBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5);
- var saveLbl:TextField = new TextField();
- saveBtn.addChild(saveLbl);
- saveLbl.text = "Save";
- saveLbl.selectable = false;
- // Clear button
- clearBtn = new Sprite();
- addChild(clearBtn);
- clearBtn.x = 230;
- clearBtn.y = 10;
- clearBtn.useHandCursor = true;
- clearBtn.graphics.lineStyle(1);
- clearBtn.graphics.beginFill(0xcccccc);
- clearBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5);
- var clearLbl:TextField = new TextField();
- clearBtn.addChild(clearLbl);
- clearLbl.text = "Clear";
- clearLbl.selectable = false;
- }
- }
- }
jinglikeblue
http://blog.csdn.net/jinglikeblue/article/details/9134395
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...