【发布时间】:2014-02-04 17:45:31
【问题描述】:
我正在尝试为游戏制作关卡编辑器。 现在我可以创建一个新地图(使用鼠标)并单击“生成”按钮来跟踪地图数组 (细绳)。之后,我可以简单地从输出中复制代码 并用它来创建一个新的关卡。
假设我有一个名为 NewLevel.as 的类
我创建了一个新数组并从输出窗口粘贴代码,所以我有二维数组。 然后使用 for 循环将图块添加到舞台。
var array:Array =
// code below is what I get in output window
[
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7],
[7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7]
];
for (var row:int = 0; row < array.length; row++)
{
for (var column:int = 0; column < array[row].length; column++)
{
var tile = new Tile();
addChild(tile);
tile.x = column * tile.width;
tile.y = row * tile.height;
tile.gotoAndStop(array[row][column] +1);
}
}
它没有问题,这给了我使用关卡编辑器创建的地图。 但我想要的是玩家输入他们的“地图代码”并加载他们创建的地图。 我想你已经在很多游戏中看到了这一点。
我有一个文本区域,所以用户可以输入他们的字符串, 如何将他们的输入转换为二维数组并加载它(如您在示例中看到的)? 应该是二维数组。
我还在 textarea 中添加了事件监听器
textarea.addEventListener(Event.CHANGE, changes);
function changes(e:Event):void
{
// convert input text to 2d array to build a new map
// Do not know how to get input to use with JSON
var myStr = levelTextarea.text;
var a2:Array = JSON.parse(myStr) as Array;
trace( a2 );
}
【问题讨论】:
-
如果您展示如何加载该级别,我也可以接受一维数组。
-
只需将数组输入为每个子数组的单行。然后在 "\r\n" 上分割输入,并用 "," 分割每一行。
-
我不懂split函数,你能写个代码吗?另一个问题是我不知道如何将输入数组设为单行,我可以更新代码,你会看到我是如何获得二维数组作为输入的。
标签: actionscript-3 flash actionscript tile