Flash AS3: saving/loading 一个 MovieClip 的所有 children 的位置

Flash AS3: saving/loading the positions of all the children of a MovieClip

我想知道如何保存和加载 MovieClip 的所有 children 的 X 和 Y 位置。

我有一个带有保存和加载按钮的项目。

他们保存和加载 MovieClip 的 X 和 Y 位置 child。

save.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler3);

function fl_MouseClickHandler3(event:MouseEvent):void
{

var mySo:SharedObject = SharedObject.getLocal("SaveData");

mySo.data.my_x = mc2.x;
mySo.data.my_y = mc2.y;
mySo.flush();


}

loader.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);

function fl_MouseClickHandler_2(event:MouseEvent):void
{

var mySo:SharedObject = SharedObject.getLocal("SaveData");


mc2.x = mySo.data.my_x;
mc2.y = mySo.data.my_y;

}

然而,这只会保存和加载上次单击的 MovieClip child。 我怎样才能将它从仅保存和加载最后单击的 MovieClip child, 保存和加载所有 MovieClip children?

这将始终保存 "mc2" 个位置,您将需要 运行 对动画片段的 numchildren 进行循环并将它们的位置放入数组中,然后以相同的方式访问它们。这是一个代码示例

import flash.display.MovieClip;

var mySo:SharedObject = SharedObject.getLocal("SaveData");
save.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler3);
loader.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);

function fl_MouseClickHandler3(event:MouseEvent):void
{
    var clippositions:Array = new Array();
    var child:MovieClip;
    for(var i:uint=0; i<this.numChildren; i++)
    {
        if( this.getChildAt(i) is MovieClip )
        {
            child = this.getChildAt(i) as MovieClip;
            if(child)
            {
                clippositions.push( { clipname:child.name, my_x:child.x,my_y:child.y } );
            }
        }
    }
    mySo.data.clippositions = clippositions
    mySo.flush();
}

function fl_MouseClickHandler_2(event:MouseEvent):void
{
    var clippositions:Array = mySo.data.clippositions;
    if( clippositions != null )
    {
        var child:MovieClip;
        for(var i:uint=0; i<clippositions.length; i++)
        {
            if( this.getChildByName( clippositions[i].clipname ) is MovieClip )
            {
                child = this.getChildByName( clippositions[i].clipname ) as MovieClip;
                if(child)
                {
                    child.x = clippositions[i].my_x;
                    child.y = clippositions[i].my_y;
                }
            }
        }
   }
}