我试图为游戏制作关卡编辑器。 现在我可以创建一个新的地图(使用鼠标)并单击“生成”按钮来跟踪地图数组 (串)。之后我可以简单地从输出中复制代码 并用它来创造一个新的水平。
假设我有一个名为NewLevel.as的课程
我从输出窗口创建一个新数组并粘贴代码,所以我有2d数组。 然后使用for循环将tile添加到stage。
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,所以用户可以输入他们的字符串, 如何将其输入转换为2d数组并加载它(如您在示例中所示)? 它应该是2d数组。
我还在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 );
}
答案 0 :(得分:0)
您可以将JSON用于此类作业,此类可在Flash Player 11中使用。
package
{
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var a:Array = [
[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]
];
var txt:String = JSON.stringify( a )
trace( txt );
var a2:Array = JSON.parse( txt ) as Array;
trace( a2 );
}
}
}