Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AS3-如何在XML文件中存储和使用数组_Xml_Actionscript 3 - Fatal编程技术网

AS3-如何在XML文件中存储和使用数组

AS3-如何在XML文件中存储和使用数组,xml,actionscript-3,Xml,Actionscript 3,我正在用Flash制作一个简单的关卡编辑器(使用AS3),我使用一个2D值数组在屏幕上放置正方形 假设我有一个数组(非常简单的示例): (其中0表示零,1表示正方形) 如何将该数组存储在XML文件中,以便游戏可以从XML文件中读取该信息 我完全不懂XML(从未使用过它) 任何帮助都将不胜感激 提前感谢, Zoron19这里有一个简单的例子 在名为levels.xml的xml文件中,每一行都有一个id表示行号,值是一个字符串(如您所述) Hero是一个关于as3中xml的一些简单示例的链接 在名为

我正在用Flash制作一个简单的关卡编辑器(使用AS3),我使用一个2D值数组在屏幕上放置正方形

假设我有一个数组(非常简单的示例):

(其中0表示零,1表示正方形)

如何将该数组存储在XML文件中,以便游戏可以从XML文件中读取该信息

我完全不懂XML(从未使用过它)

任何帮助都将不胜感激

提前感谢,


Zoron19这里有一个简单的例子

在名为levels.xml的xml文件中,每一行都有一个id表示行号,值是一个字符串(如您所述)


Hero是一个关于as3中xml的一些简单示例的链接

在名为levels.xml的xml文件中,每一行都有一个id表示行号,值是一个字符串(如您所述)


Hero是一个关于as3中xml的一些简单示例的链接,它非常简单,使用xml是一种浪费

您可以使用
join()
轻松地将其存储为纯文本,然后使用
split()
将其转换回数组。下面是一个将二维数组转换为字符串,然后再转换回数组的示例。首先,我们有一个函数,可以将您的数组转换为字符串进行存储:

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,可以非常轻松地针对
节点存储级别数据。假设您在一个名为
levels.XML的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>
然后,
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将是一种浪费

您可以使用
join()
轻松地将其存储为纯文本,然后使用
split()
将其转换回数组。下面是一个将二维数组转换为字符串,然后再转换回数组的示例。首先,我们有一个函数,可以将您的数组转换为字符串进行存储:

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,可以非常轻松地针对
节点存储级别数据。假设您在一个名为
levels.XML的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>
然后,
loadLevel
功能可以获取数据并从中加载级别:

function loadLevel(sourceXML:XML, levelName:String):void
{
    var levelData:Array = levelToArray(sourceXML.level.(@name == levelName));
    trace(levelData);

    // Work with the loaded data array.
    //
}

我理解所有这些是如何工作的,但是,我该如何将该字符串放入外部文件并将其加载回Flash?@Zoron19我将把它添加到我的答案中。级别信息是如何进入XML文件的?在加载数组之前,我需要知道如何将数组存储在XML文件中。@Zoron19通常是手动将其放入其中的。。。没有理由将少量数组数据存储到外部XML文件中,而只需要重新加载它,是吗?XML文件由您手动设置,因此数据不会直接存储到游戏本身中。只有在有大量级别数据且您不想预先加载所有数据时,才需要这样做。XML也可以由服务器端代码(如PHP)生成,方法是从数据库中提取级别并从中构建XML,这更高级。我将有一个单独的Flash程序作为关卡编辑器。所以我希望能够在游戏和编辑器之间共享阵列数据。很抱歉,我不太清楚。我知道所有这些是如何工作的,但是,我应该如何将该字符串放入外部文件并将其加载回Flash?@Zoron19我将把它添加到我的答案中。级别信息甚至是如何进入XML文件的?在加载数组之前,我需要知道如何将数组存储在XML文件中。@Zoron19通常是手动将其放入其中的。。。没有理由将少量数组数据存储到外部XML文件中,而只需要重新加载它,是吗?XML文件由您手动设置,因此数据不会直接存储到游戏本身中。只有在有大量级别数据且您不想预先加载所有数据时,才需要这样做。XML也可以由服务器端代码(如PHP)生成,方法是从数据库中提取级别并从中构建XML,这更高级。我将有一个单独的Flash程序作为关卡编辑器。所以我希望能够在游戏和编辑器之间共享阵列数据。很抱歉,我不清楚。为什么没有人包括如何在XML文件中存储数据?你告诉过我如何将XML加载到Flash中,但是数组是如何加载到XML中的呢?你应该制作一个工具来生成XML,我认为这并不难。工具可能是空气锉刀。查看此文档,希望它能有所帮助。为什么没有人介绍如何将数据存储在XML文件中?你告诉过我如何将XML加载到Flash中,但是数组是如何加载到XML中的呢?你应该制作一个工具来生成XML,我认为这并不难。工具可能是空气锉刀。看看这个文件,希望能有所帮助