将输入文本转换为2d数组

时间:2014-02-04 17:45:31

标签: actionscript-3 flash actionscript tile

我试图为游戏制作关卡编辑器。 现在我可以创建一个新的地图(使用鼠标)并单击“生成”按钮来跟踪地图数组 (串)。之后我可以简单地从输出中复制代码 并用它来创造一个新的水平。

假设我有一个名为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 );
}

1 个答案:

答案 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 );


        }

    }

}