kirillvs85
05.11.2013, 10:33
Здравствуйте.
Создал класс, который выводил на стейдж битмапу и исправно работал, выводил в случайном месте по x и постоянном по y. Далее мне нужно было создать несколько таких изображений выводившихся на стейдже со случайными координатами по Х и постоянными по Y.
Один из вариантов решение было создать в мейне массив, в который запихнуть ссылки на нужное мне количество экземпляров этого класса.
Но захотелось как то разгрузить мейн класс от дополнительного кода и массивов и решил я сделать так, что бы нужное мне количество битмапов загружалось и выводилось на стейдж внутри самого класса, количество должно задаваться через конструктор класса. То есть используем только один экземпляр класс с единственным параметром - количеством нужных нам изображений.
Вот сам класс MyBlock
package
{
import *.*; // Код пишу по памяти, поэтому опущу некоторые подробности.
public class MyBlock extends sprite
{
[emded...] // тут подгружаю png изображение...
private var zagruz:class;
private var myBlock:bitmap = new zagruz;
private var blockArr:Array = new Array();
private var myBlockX:number = Math.floor(Math.random()*700);
private var myBlockY:number = 300;
private var objNum:uint;
public function MyBlock(_objNum):void
{
objNum = _objNum;
addEventListener(event.ADDED_TO_STAGE, init);
}
private function init(e:event):void
{
removeEventListener(event.ADDED_TO_STAGE, init);
for (var i:uint = 0; i < objNum; i++)
{
blockArr[i] = myBlock;
blockArr[i].x = myBlockX;
blockArr[i].y = myBlockY;
addChild(blockArr[i]);
trace(blockArr[i].x);
}
}
}
}
Вот тело мейна
private var myBlock:MyBlock = new MyBlock(5); // добавляю 5 битмапов на сцену
addChild(myBlock);
Собственно в результате выводится одно единственное изображение, как я в дальнейшем понял выводится только последний элемент массива.
Трейс показывает разные значения для blockArr[i].x во время формирования массива.
Собственно вопрос: в чем может быть проблема? Возможна ли вообще такая реализация? Может быть я просто что то недопонимаю?
Создал класс, который выводил на стейдж битмапу и исправно работал, выводил в случайном месте по x и постоянном по y. Далее мне нужно было создать несколько таких изображений выводившихся на стейдже со случайными координатами по Х и постоянными по Y.
Один из вариантов решение было создать в мейне массив, в который запихнуть ссылки на нужное мне количество экземпляров этого класса.
Но захотелось как то разгрузить мейн класс от дополнительного кода и массивов и решил я сделать так, что бы нужное мне количество битмапов загружалось и выводилось на стейдж внутри самого класса, количество должно задаваться через конструктор класса. То есть используем только один экземпляр класс с единственным параметром - количеством нужных нам изображений.
Вот сам класс MyBlock
package
{
import *.*; // Код пишу по памяти, поэтому опущу некоторые подробности.
public class MyBlock extends sprite
{
[emded...] // тут подгружаю png изображение...
private var zagruz:class;
private var myBlock:bitmap = new zagruz;
private var blockArr:Array = new Array();
private var myBlockX:number = Math.floor(Math.random()*700);
private var myBlockY:number = 300;
private var objNum:uint;
public function MyBlock(_objNum):void
{
objNum = _objNum;
addEventListener(event.ADDED_TO_STAGE, init);
}
private function init(e:event):void
{
removeEventListener(event.ADDED_TO_STAGE, init);
for (var i:uint = 0; i < objNum; i++)
{
blockArr[i] = myBlock;
blockArr[i].x = myBlockX;
blockArr[i].y = myBlockY;
addChild(blockArr[i]);
trace(blockArr[i].x);
}
}
}
}
Вот тело мейна
private var myBlock:MyBlock = new MyBlock(5); // добавляю 5 битмапов на сцену
addChild(myBlock);
Собственно в результате выводится одно единственное изображение, как я в дальнейшем понял выводится только последний элемент массива.
Трейс показывает разные значения для blockArr[i].x во время формирования массива.
Собственно вопрос: в чем может быть проблема? Возможна ли вообще такая реализация? Может быть я просто что то недопонимаю?