AS3 追加数据到本地文件

AS3 Append data to local file

我有一个将在本地桌面(而非网络)上玩的 AS3 游戏,我需要在每场比赛后保存玩家的详细信息。 我尝试了几种方法(文件流、sharedObject、XML),但到目前为止 none 已经奏效。 要保存的详细信息是变量 player_name 和 player_score。我只需要将这些添加到现有文件中,不必对它们进行排序或过滤。

如果要在文件系统上写入,必须使用AIR。它是 Flash Player 的包装器 + 大量适用于特定文件系统的功能。它可以 运行 在不同的设备上,包括移动设备,它会为您提供所需的功能。

单独使用 Flash Player 将无法使用文件系统。

FileStreamFileMode.APPEND 结合使用。

var fileStream:FileStream = new FileStream();
fileStream.open(myFile, FileMode.APPEND);
fileStream.writeUTFBytes("\n" + myData);
fileStream.close();

对于这种情况,我将使用一个简单的 LocalShardObject。我希望,你会理解这段代码。其他请问。你好安德烈

import flash.events.NetStatusEvent;
import flash.net.SharedObject;    

var soName:String="yourSO"

function writeScore(playerName:String, playerScore:Number):void
{
    var so:SharedObject = SharedObject.getLocal(soName);    
    // Write a new Object nemed by the playername in the so 
    so.data[playerName]= {name:PlayerName, playerScore:playerScore};    
    // add a successListener
    so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
    // and flush it
    so.flush(); 
}

function readSO():Object
{
    var so:SharedObject; = SharedObject.getLocal(soName);

    //If no lso was found
    if (so.size === 0 || so.data.results === null)  {               
         _results = [];
        trace("lso not found"); 
        return;             
    }
    //For 'playerName' you can choose a name you want and add all your stuff to  this object // it is basically an object
    var playerName:String = so.data[playerName]name;
    var playerScore:Number = so.data[playerName]playerScore;
    trace(playerName, playerScore); 
}

function onFlushStatus(event:NetStatusEvent):void
{           
    var so:SharedObject = event.target as SharedObject; 
    switch (event.info.code)
    {
        case "SharedObject.Flush.Success":
            trace("value saved in the lso"); 
        break;
        case "SharedObject.Flush.Failed":
            trace( "value not saved in the lso"); 
        break;
    }

    so.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
}

//Let' try
writeScore("Andre", 10);
readSO("Andre");
writeScore("JayTray", 11);
readSO("JayTray");