(AS3)尝试使用SharedObject保存数据时出现错误1009?

时间:2015-02-24 22:18:19

标签: actionscript-3

无论何时调用我的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;


}

2 个答案:

答案 0 :(得分:0)

saveDataObjectnull;它没有被初始化。它需要在其成员之前初始化,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

希望可以提供帮助。