Страница 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 как переменную, а в коде используешь её как конструктор. Так делать же нельзя.

Код: Выделить всё

Arr[i][j] = new cell_tmp();
Заменить на

Код: Выделить всё

]Arr[i][j] = new Clips.cell();
вроде как нужно.

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
Да, через циклы. прогресс бар обязательно.. Но задумка всё равно не удалась (( Большое количество объектов реально грузит плеер. Значит пойду по другому пути: буду грузить в базу чисто координаты, а уже по ним только там где нужно буду выводить клипы.