【问题标题】:AS3 Append data to local fileAS3 将数据追加到本地文件
【发布时间】:2015-04-29 14:17:32
【问题描述】:

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

【问题讨论】:

  • filestream 或至少 sharedobject 应该可以正常工作。

标签: xml actionscript-3 flash air


【解决方案1】:

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

【讨论】:

  • 谢谢 Andre,这些共享对象文件的可靠性和稳定性如何?我这周一直在测试它们,它们保存了所有数据,我只是担心它们会在 X 天后过期并丢失所有保存的信息 - 是这种情况,你知道吗?再次感谢
  • help.adobe.com/en_US/as3/dev/… 说:共享对象具有以下属性:默认情况下它们不会过期。默认情况下,它们的大小限制为每个 100 KB。它们可以存储简单的数据类型(如字符串、数组和日期)。它们存储在应用程序指定的位置(在用户的主目录中)。它们永远不会在客户端和服务器之间传输。它们与用户不删除它们一样稳定可靠;-)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    FileStreamFileMode.APPEND 一起使用。

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

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多