分数使用Filestream(AS3 - Air for Android)

时间:2015-01-05 10:01:38

标签: android actionscript-3 air filestream

我已经为Android启动了一个小桌面游戏,我一直在研究永久保存分数的方法。每当用户赢得针对" AI"的游戏时,他/她获得一个点(可以用来解锁特殊的棋子和棋盘游戏)。 我尝试使用SharedObject,但显然如果用户删除游戏数据(或其他东西),它们可以被删除。所以我选择了Filestream。我在网上阅读了一些关于它的帖子并且认为我理解,但由于它不适合我,我想我没有:)。

var wonGames:int; //variable I want to save

function writeObject():void { //First function to create/write in the file
    var score1:Object = new Object();
    score1.value =  wonGames; //value of object = variable value
    trace(score1.value);

    var file:File = File.applicationStorageDirectory.resolvePath("score1.file");
    var fileStream:FileStream = new FileStream(); 
    fileStream.open(file, FileMode.WRITE);
    fileStream.writeObject(score1);
    fileStream.close();
};


function readObject():void { //second function to read the file and modify the variable.

    var file:File = File.applicationStorageDirectory.resolvePath("score1.file");
    if (!file.exists) {
        return;
    }
    var fileStream:FileStream = new FileStream();
    fileStream.open(file, FileMode.READ);
    var score1:Object = fileStream.readObject(); 
    wonGames=score1.value;//update the variable
    fileStream.close();
};

btn26.addEventListener(MouseEvent.CLICK, fnBtn26);
function fnBtn26(e: Event): void { //third function, where the winning happens
    if (winP1.currentFrame==1){ //game won
        winP1.nextFrame(); //victory screen
        readObject(); //get old value for score 1
        wonGames=wonGames+1; //update it
        trace("WonGames= "+ wonGames);
        writeObject(); //write it in file
    }
};

wonGames已更新,但是当我关闭应用并重新启动它时,它会回到0。 如果你们知道什么是错的(或者有另一种方式来实现我的目标),我全都听见了。 谢谢。

1 个答案:

答案 0 :(得分:0)

可能来自wonGames = score1.value的“价值”;不存在,FP将其评估为未定义并尝试将其分配给int(wonGames)返回0; 在WriteObject中尝试:

  fileStream.writeInt(score1);

和readObject尝试:

  wonGames =  fileStream.readInt(); 

// wonGames = score1.value; //更新变量