AS3 追加数据到本地文件
AS3 Append data to local file
我有一个将在本地桌面(而非网络)上玩的 AS3 游戏,我需要在每场比赛后保存玩家的详细信息。
我尝试了几种方法(文件流、sharedObject、XML),但到目前为止 none 已经奏效。
要保存的详细信息是变量 player_name 和 player_score。我只需要将这些添加到现有文件中,不必对它们进行排序或过滤。
如果要在文件系统上写入,必须使用AIR。它是 Flash Player 的包装器 + 大量适用于特定文件系统的功能。它可以 运行 在不同的设备上,包括移动设备,它会为您提供所需的功能。
单独使用 Flash Player 将无法使用文件系统。
将 FileStream
与 FileMode.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");
我有一个将在本地桌面(而非网络)上玩的 AS3 游戏,我需要在每场比赛后保存玩家的详细信息。 我尝试了几种方法(文件流、sharedObject、XML),但到目前为止 none 已经奏效。 要保存的详细信息是变量 player_name 和 player_score。我只需要将这些添加到现有文件中,不必对它们进行排序或过滤。
如果要在文件系统上写入,必须使用AIR。它是 Flash Player 的包装器 + 大量适用于特定文件系统的功能。它可以 运行 在不同的设备上,包括移动设备,它会为您提供所需的功能。
单独使用 Flash Player 将无法使用文件系统。
将 FileStream
与 FileMode.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");