ウィジェットを保存およびロードできる 2 つのメソッドを作成します。save メソッドはウィジェット クラスからデータを取得し、それを共有オブジェクトに保存します。load クラスは共有オブジェクトからデータを取得し、オブジェクトのプロパティを設定します。
このようなもの :
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();
それが役立つことを願っています。