Flash AS3,在舞台上保存并加载多个对象位置

时间:2016-03-04 10:37:13

标签: actionscript-3 flash

我有一个拖放项目,用户可以在其中拖动MovieClip的副本, 我想知道如何保存和加载可拖动副本的位置 使用SharedObject类。我目前使用SharedObject进行保存和加载 按钮。但它只保存最后拖动的MovieClip副本的位置。

如何在舞台上保存MovieClip副本的位置,以便何时保存 我点击加载按钮,它会加载所有副本的位置 我点击了保存按钮?

代码:

latestClone.addEventListener(MouseEvent.MOUSE_DOWN, onCloneClick);
function onCloneClick(e:MouseEvent):void
{
var target:MovieClip = e.currentTarget as MovieClip;
latestClone = target;



}

}   

save.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void


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

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


}


loader.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);

function fl_MouseClickHandler_2(event:MouseEvent):void
{
var mySo:SharedObject = SharedObject.getLocal("SaveData");

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


}   

1 个答案:

答案 0 :(得分:0)

使用SharedObject意味着您的应用程序不负责数据持久性,操作系统或用户可以随时删除该数据,甚至根本不允许该数据。

首先问题是,您的代码正在使用该数据,因为它始终存在。错误的方法,首先要做的是检查数据是否可用,例如:

function BaseController($scope, $http) {
    $scope.fnamequery = '';
    $scope.fnames = ["Aida", "Aidan", "Alla", "Allen", "Beverly", "Bea", "Caleb","Catherine"];
}

接下来保留一个全局对象并将值放入其中:

var globaldata:Object;
var data:Object = SharedObject.getLocal("SaveData").data;
if(data["mydata"] != undefined)
{
    //there's some data here
    globaldata = data["mydata"];
}
else
{
    //there's no data
    globaldata = {};
}

现在您已准备好使用该数据,如果它仍然存在:

globaldata["mc1"] = {x:mc1.x, y:mc1.y};
globaldata["mc2"] = {x:mc2.x, y:mc2.y};
//etc .....
data["mydata"] = globaldata;
//no need to call flush
相关问题