Страница 1 из 1
Генерирования игрового поля
Добавлено: 04 мар 2013, 16:15
mastaxys
Доброго дня.
Недавно перелез на AS3 и столкнулся с такой проблемой:
Есть клип ячейки, из этой ячейки создаю поле через цикл.
В цикле в AS2 делал так:
Код: Выделить всё
var tmp = cell.duplicateMovieClip("cell" + a + "-" + s, n);
Но в AS3 эту команду убрали.
Подскажите, как сгенерировать поле из одного мувика на AS3?
Re: Генерирования игрового поля
Добавлено: 04 мар 2013, 16:38
ktibo
Массивами. Элемент массива - объект класса ячейки.
Код: Выделить всё
var Arr:Array = new Array();Arr[i][j] = new cell();addChild(Arr[i][j]);
Re: Генерирования игрового поля
Добавлено: 04 мар 2013, 17:03
mastaxys
Спасибо. Это понятно.... но мне нужно вывести на сцену один клип "ПОЛЕ", в котором будут размножены ячейки. Чтобы оперировать не с кучей ячеек, а с одним мувиком. Не знаю правда понятно объяснил или нет ))
Re: Генерирования игрового поля
Добавлено: 04 мар 2013, 17:06
ktibo
mastaxys, код вставить в класс tmp, например в конструктор.
Re: Генерирования игрового поля
Добавлено: 04 мар 2013, 17:21
mastaxys
Блин... на сцену вывожу клип Field вот код его класса:
Код: Выделить всё
package Clips{ //import Clips.cell; import flash.display.*; import flash.events.*; public var cell_tmp:cell = new Clips.cell(); public class field extends Sprite { public function field() { var Arr:Array = new Array(); var stroka:Number = 20; var stolbec:Number = 20; for (var i=0; i == stroka; i++) { for(var j=0; j == stolbec; j++) { Arr[i][j] = new cell_tmp(); addChild(Arr[i][j]); } } } }//End Class}//End package
Ошибка при объявлении public var cell_tmp...
5006: Файл ActionScript не может иметь более одного внешнего определения: Clips.cell_tmp, Clips.field
Re: Генерирования игрового поля
Добавлено: 04 мар 2013, 20:40
Casperovskii
mastaxys
Так ты же объявил cell_tmp как переменную, а в коде используешь её как конструктор. Так делать же нельзя.
Заменить на
вроде как нужно.
Re: Генерирования игрового поля
Добавлено: 04 мар 2013, 21:07
Alazaur
Ога и имя пакета перед классом не надо, так же удалить определение переменной вне класса, ну и циклы какие-то странные. Вот вобщем проще вам целиком переделать, сравните сами посмотрите где были ошибки:
Код: Выделить всё
package Clips{ import flash.display.Sprite; public class field extends Sprite { public function field() { var rows:int = 20; var cols:int = 20; for (var i:int = 0; i < rows; i++) { for(var j:int = 0; j < cols; j++) { var mc:cell = new cell; mc.x = j * mc.width; mc.y = i * mc.height; addChild(mc); } } } }}
Да и кстати у вас имя пакета с большой буквы, а имена классов с маленькой, а как бы правильней делать наоборот.
Re: Генерирования игрового поля
Добавлено: 06 мар 2013, 10:47
mastaxys
Да, спасибо, всё получилось... Запутался в классах ))
Re: Генерирования игрового поля
Добавлено: 06 мар 2013, 11:54
Casperovskii
А можно я задам свой вопрос? Пробовал на Си++ генерить поле 50х50, так это было жутко долго. Каким образом у тебя это реализовано, через циклы же? Просто создание 2500 объектов реально грузит. Или к этому процессу стоит сделать прогресс бар просто?
Re: Генерирования игрового поля
Добавлено: 06 мар 2013, 16:02
mastaxys
Да, через циклы. прогресс бар обязательно.. Но задумка всё равно не удалась (( Большое количество объектов реально грузит плеер. Значит пойду по другому пути: буду грузить в базу чисто координаты, а уже по ним только там где нужно буду выводить клипы.