您的位置:首页 > 移动开发 > Objective-C

AS3 ShareObject类示例研究

2011-12-08 09:24 155 查看
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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: