无论何时调用我的saveData函数,我都会收到错误1009.我不知道我哪里出错了,因为我觉得没有什么是null:/
所有答案都提前得到赞赏。
我的代码:
import flash.events.Event;
import flash.net.SharedObject;
stop();
var Gold = 1;
var goldGain = 1;
var Diamond = 1;
var diamondGain = 1;
var saveDataObject:SharedObject;
function saveData(){
saveDataObject.data.savedGold = Gold;
saveDataObject.data.savedDiamonds = Diamond;
saveDataObject.data.savedGoldGain = goldGain;
saveDataObject.data.savedDiamondGain = diamondGain;
}
saveData();
function loadData(){
Gold = saveDataObject.data.savedGold;
Diamond = saveDataObject.data.savedDiamonds;
goldGain = saveDataObject.data.savedGoldGain;
diamondGain = saveDataObject.data.savedDiamondGain;
}
addEventListener(Event.ENTER_FRAME, enterFrameEventSaves)
function enterFrameEventSaves(event:Event){
}
playScreen_clickButtonMovieClipUp.addEventListener(MouseEvent.MOUSE_DOWN, playScreen_clickButton_stateChangeEventUp);
function playScreen_clickButton_stateChangeEventUp(event:MouseEvent){
gotoAndStop(2);
Gold += goldGain;
}
答案 0 :(得分:0)
saveDataObject
是null
;它没有被初始化。它需要在其成员之前初始化,saveDataObject.data
也是如此。所以:
saveDataObject = new Object(); // 1
saveDataObject.data = new Object(); // 2
saveDataObject.data.whatever = whatever; // 3
当然,由于它是一个共享对象(可能是SharedObject
类型,而不仅仅是Object
),在你的情况下初始化会有点复杂,并且取决于你的要求。您必须跟上哪个客户端初始化哪个SharedObject
在哪个应用实例中,并且您需要一个系统来传递相同的引用,而不会让它感到困惑。
另外作为旁注,输入变量和函数通常更好。即使您偶尔需要将其保留为无类型,最好通过说var someVariable:*
来明确这样做。
答案 1 :(得分:0)
正如@Panzercrisis在他的回答中所说,saveDataObject
SharedObject
对象为空,这就是你得到错误的原因。你必须像这样初始化它:
var saveDataObject:SharedObject = SharedObject.getLocal('put_your_object_name_here');
然后,您可以保存或加载SharedObject
数据:
// verify if we have already saved some data in our SharedObject
if(saveDataObject.data.savedGold){
// then we load it
loadData();
} else {
// else we save default values
saveData();
}
有关详细信息,您可以从help.adobe.com查看此example。
希望可以提供帮助。