制作两个可以保存和加载小部件的方法,保存方法应该从小部件类中获取数据并将其保存到共享对象中,加载类将从共享对象中获取数据并设置对象的属性。
像这样的东西:
public function save():Object
{
return {
"x":this.x,
"y":this.y,
"otherStuff":otherStuff
};
}
public function load(data:Object):void
{
this.x = data.x;
this.y = data.y;
this.otherStuff = data.otherStuff;
}
您可以调用 save 方法并将结果存储在数组中,然后将其存储在共享对象中。您只需要保存重建小部件类所需的数据,而不是类的所有属性。
编辑:根据 BlueRaja 的评论更新。
正如 BlueRaja 指出的那样,IExternalizable 旨在用于此目的。
如果您有这样的课程:
public class MyClass implements IExternalizable
{
private var one:int = 1;
private var two:int = 2;
public function MyClass()
{
}
public function writeExternal(output:IDataOutput):void
{
output.writeInt(one);
output.writeInt(two);
}
public function readExternal(input:IDataInput):void
{
one = input.readInt();
two = input.readInt();
}
public function print():void
{
trace(one);
trace(two);
}
}
然后你可以像这样保存它:
registerClassAlias("MyClass", MyClass);
var sharedObject:SharedObject = SharedObject.getLocal("so");
var myClass:MyClass = new MyClass();
sharedObject.data['storedObject'] = myClass;
sharedObject.flush();
然后加载它:
registerClassAlias("MyClass", MyClass);
var sharedObject:SharedObject = SharedObject.getLocal("so");
var loadedClass:MyClass = sharedObject.data['storedObject'] as MyClass;
loadedClass.print();
希望有帮助。