一個鏈接,東西這麼簡單,它是使用XML的浪費。
您可以使用join()
將其作爲純文本輕鬆存儲,然後使用split()
將其轉換回數組。以下是將2D數組轉換爲字符串然後返回到數組的示例。首先,我們必須將你的數組轉換成字符串存儲功能:使用您的級別的數據
function levelToString(input:Array):String
{
var output:Array = [];
for each(var i:Array in input)
{
output.push(i.join(","));
}
return output.join("#");
}
和示例:
var level:Array = [[0, 0, 0, 0, 0], [1, 1, 1, 1, 1]];
trace(levelToString(level)); // 0,0,0,0,0#1,1,1,1,1
現在我們可以使用此功能將其轉換回2D陣列:
function levelToArray(input:String):Array
{
var base:Array = input.split("#");
var output:Array = [];
for each(var i:String in base)
{
output.push(i.split(","));
}
return output;
}
和示例使用我們上面得到的字符串:
var array:Array = levelToArray("0,0,0,0,0#1,1,1,1,1");
trace(array[0]); // 0,0,0,0
trace(array[1]); // 1,1,1,1
使用這種方法,您的數據要小得多。
現在來存儲和加載該數據。如果你想使用XML,你可以很容易地將水平數據存儲在<level>
節點上。說你有這個XML文件名爲levels.xml
:
<levels>
<level name="first">0,0,0,0,0#1,1,1,1,1</level>
<level name="second">0,1,0,0,0#1,1,1,0,0</level>
</levels>
將這些數據加載到遊戲中,你將需要使用URLLoader
:
var req:URLRequest = new URLRequest("levels.xml");
var loader:URLLoader = new URLLoader(req);
loader.addEventListener(Event.COMPLETE, dataLoaded);
function dataLoaded(e:Event):void
{
var xml:XML = e.target.data as XML;
// Described below.
loadLevel(xml, "first");
}
然後是loadLevel
功能可以把數據並加載它的級別:
function loadLevel(sourceXML:XML, levelName:String):void
{
var levelData:Array = levelToArray(sourceXML.level.(@name == levelName));
trace(levelData);
// Work with the loaded data array.
//
}
爲什麼沒有人包括如何將數據存儲在XML文件中?您已經告訴我如何將XML加載到Flash中,但Array如何進入XML? – Zoron19
你應該製作一個工具來生成XML,我認爲這並不難。該工具可以是空氣檔案。看看這個文檔,希望它幫助http://www.adobe.com/cn/devnet/air/flex/quickstart/articles/xml_prefs.html – Pan