Sprite または MovieClip のその他の DisplayObject オブジェクトは直接シリアル化できません。したがって、オブジェクト情報 (原点 x、y、幅、高さ、色、子情報...) を保存する必要があります。ByteArray または Array または Dictionary を使用して ...そしてそれを ShareObjects に保存します。後で ShareObject からロールバックし、元のオブジェクトを再作成します。MovieClip または Sprite の適切な目的はコンテナーです。
これが私のテストコードです。
1. ムービークリップを作成します。目的はコンテナです。
2. グラフィックスを使用して長方形を描きます。そして座標を設定します。
var drawWidth:Number = 500;
var drawHeight:Number = 300;
var rect:MovieClip = new MyRect();
rect.graphics.beginFill(0xffffff*Math.random(),1);
rect.graphics.drawRect(0,0,drawWidth,drawHeight);
rect.graphics.endFill();
rect.x= 300;
rect.y= 100;
3. 配列に情報を格納します。
var myRectInformation:Array = new Array();
myRectInformation.push(rect.x);
myRectInformation.push(rect.y);
myRectInformation.push(drawWidth);
myRectInformation.push(drawHeight);
var bmd:BitmapData = new BitmapData(rect.width, rect.height,true,0);
bmd.draw(rect);
//is byteArray.
myRectInformation.push(bmd.getPixels(new Rectangle(0,0,bmd.width,bmd.height)));
4. SharedObjects、配列に保存します。
var mySaveData:SharedObject = SharedObject.getLocal("myStorage")
mySaveData.data.myRectInformation = myRectInformation;
mySaveData.flush();
5. これは、格納された SharedObject データからロードされます。オブジェクトを再作成します。
var rect:MovieClip = new MyRect();
var loadBmd:BitmapData = new BitmapData(mySaveData.data.myRectInformation[2], mySaveData.data.myRectInformation[3], true, 1);
loadBmd.setPixels(new Rectangle(0,0,loadBmd.width,loadBmd.height), mySaveData.data.myRectInformation[4]);
var bmp:Bitmap = new Bitmap(loadBmd);
rect.addChild(bmp);
rect.x = mySaveData.data.myRectInformation[0];
rect.y = mySaveData.data.myRectInformation[1];
addChild(rect);