Xml AS3将数据附加到本地文件

Xml AS3将数据附加到本地文件,xml,actionscript-3,flash,air,Xml,Actionscript 3,Flash,Air,我有一个AS3游戏,将在本地桌面上玩,而不是在网络上,我需要在每次游戏后保存玩家的详细信息。 我尝试了一些方法,如filestream、sharedObject、XML,但到目前为止都没有成功。 要保存的详细信息是变量player_name和player_score。我只需要将这些文件添加到现有文件中,它们不必进行排序或筛选。如果要在文件系统上写入,必须使用AIR。它是flashplayer的包装,以及与特定文件系统一起工作的大量功能。它可以在不同的设备上运行,包括移动设备,它将为您提供所需的功

我有一个AS3游戏,将在本地桌面上玩,而不是在网络上,我需要在每次游戏后保存玩家的详细信息。 我尝试了一些方法,如filestream、sharedObject、XML,但到目前为止都没有成功。
要保存的详细信息是变量player_name和player_score。我只需要将这些文件添加到现有文件中,它们不必进行排序或筛选。

如果要在文件系统上写入,必须使用AIR。它是flashplayer的包装,以及与特定文件系统一起工作的大量功能。它可以在不同的设备上运行,包括移动设备,它将为您提供所需的功能

仅Flash Player无法使用该文件系统。

将FileStream与一起使用


对于这种情况,我将使用一个简单的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");

filestream或至少sharedobject应该工作得很好。谢谢Andre,这些sharedobject文件有多可靠和稳定?我本周一直在测试它们,它们保存着所有数据,我只是担心它们会在X天后过期并丢失所有保存的信息-是这样吗,你知道吗?再次感谢:共享对象具有以下属性:默认情况下不会过期。默认情况下,它们的大小限制为每个100 KB。它们可以存储简单的数据类型,如字符串、数组和日期。它们存储在用户主目录中应用程序指定的位置。它们永远不会在客户端和服务器之间传输。它们稳定可靠,因为用户不会删除它们-
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");