我正在制作一个包含3层“瓷砖”的基本瓷砖游戏
图像游戏的维度为3x3我的数据阵列如下所示:
public var tiles_Array:Array =
[ [1, 1, 1,],
[1, 2, 1,],
[1, 1, 1,],
];
public var objects_Array:Array =
[ [1, 3, 1,],
[5, 4, 1,],
[1, 7, 1,],
];
public var items_Array:Array =
[ [1, 1, 1,],
[1, 1, 8,],
[5, 1, 1,],
];
我有两个问题:
答案 0 :(得分:2)
这是我的意见。
每个加载文件操作都在操纵字符串(字符集),因此使用纯字符串优于任何其他格式。对于XML,Actionscript具有内置函数,用于将读取字符串解析为XML类型的变量。用于从字符串解析JSON格式的库也可以在Internet上的某个地方使用。但是它们都需要额外的资源。
对于您的情况,我建议如下解决方案:
_配置文件存储如下字符串:
1,1,1,1,2,1,1,1,1
1,3,1,5,4,1,1,7,1
1,1,1,1,1,8,5,1,1
_在您的应用程序中,您需要两个步骤来解析配置文件: +通过使用换行符分割文件数据将文件解析为一组级别
var levels:Array = fileData.split("\n");
再次拆分每个级别以接收实际数组
var level1:Array = levels [0] .split(“,”);
希望得到这个帮助。
答案 1 :(得分:1)
1)我认为最好使用CSV(逗号分隔值)格式来指定2d数组。例如。指定tiles_array.csv
的{{1}}文件类似于以下内容:
tiles_Array
2)恕我直言,对于关卡设计师来说,拥有3个单独的文件会更方便
答案 2 :(得分:0)
对于关卡数据,您列出的任何文件格式都可以使用。我经常使用XML,但这主要是因为Flash具有处理XML的内置命令,因此解析起来更方便。通过免费提供的库,JSON也可以正常工作,或者您可以使用简单的字符串命令滚动自己的文件格式并解析它。最后,只要您选择的文件格式足够灵活,以适应不可避免的未来扩展(例如,您已经为游戏添加了新类型的实体),这并不重要。
将单独的数据存储为单独的文件几乎总是更好,因为这样可以更灵活地管理文件。我能想到的一个例外是,如果你想将级别数据存储在数据库中,这是一种非常罕见的情况。我个人从未这样做,但我知道这对于用户生成的关卡的在线游戏来说是有意义的。
实际加载文件是使用URLLoader完成的,如下所述:http://www.kirupa.com/developer/flashcs3/using_xml_as3_pg2.htm
(注意:这仅适用于单独的平面文件。存储在数据库中的级别需要完全不同的工作流程,包括对服务器上的后端代码进行GET请求。)
对于编辑数据,关卡设计人员永远不应该直接查看XML(或JSON或CSV或其他)数据,而是编写一个关卡编辑器供他们使用,而编辑器会有命令加载和节省水平。如果您正在使用Air,那么您可以直接保存文本文件,但即使没有它,您也可以让编辑器将数据转储到可以粘贴到文件中的文本字段。