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;
}
}
}
}
}
我想知道如何保存和加载 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;
}
}
}
}
}