Я пытаюсь сделать редактор уровней для игры. Теперь я могу создать новую карту (с помощью мыши) и нажать кнопку «Создать», чтобы отследить массив карт (строка). После этого я могу просто скопировать код из вывода и использовать его для создания нового уровня.
Допустим, у меня есть класс NewLevel.as.
Я создаю новый массив и вставляю код из окна вывода, поэтому у меня есть 2d-массив. Затем добавьте плитки на сцену, используя циклы 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);
}
}
Он работает без проблем, это дает мне карту, которую я создал с помощью редактора уровней. но я хочу, чтобы игроки вводили свой «код карты» и загружали карту, которую они создали. Я думаю, вы видели это во многих играх.
У меня есть текстовая область, поэтому пользователи могут вводить свою строку, как я могу преобразовать их ввод в массив 2d и загрузить его (как вы видите в примере)? Это должен быть 2d массив.
Я также добавил прослушиватель событий в текстовую область
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 );
}