AS3.0: скопировать мувиклип из массива в рабочую область - PullRequest
1 голос
/ 29 ноября 2011

У меня есть массив с четырьмя различными мувиклипами:

var myEnemy_1:Enemy_1;
var myEnemy_2:Enemy_2;
var myEnemy_3:Enemy_3;
var myEnemy_4:Enemy_4;

var enemyArray:Array = [new Enemy_1(stage), new Enemy_2(stage), new Enemy_3(stage), new Enemy_4(stage)];

Теперь я хочу каждую секунду выбирать клипы и размещать их на сцене.

var myTimer:Timer = new Timer(1000, 1000);
var randomNumber:int;

myTimer.addEventListener("timer", timedFunction);

function timedFunction(myTime:Event):void {

randomNumber = Math.random()*4;
stage.addChild(enemyArray[randomNumber]);
enemyArray[randomNumber].x = stage.stageWidth;
enemyArray[randomNumber].y = Math.random()*(stage.stageHeight - 50) + 10;
enemyArray.push(enemyArray[randomNumber]);

}

myTimer.start();

Вкаждый из классов MovieClips имеет свой класс movieng со скоростью;

x -= Math.random()*4+1;

Все прекрасно работает, за исключением того, что когда один из фрагментов ролика находится на сцене, а randomNumber получает тот же фрагмент ролика из массива,мувиклип удаляется со сцены и добавляется снова (в исходное положение).

Что я хочу сделать, так это позволить мувиклипу выйти на сцену и просто добавить еще одну его копию, чтобы на сцене было два одинаковых мувиклипа.

Надеюсь, что кто-тоответ на это или обходной путь =) Большое спасибо!

1 Ответ

3 голосов
/ 29 ноября 2011

Если вы действительно хотите новую копию того же класса, вам нужно создать новый экземпляр.Итак:

var enemyArray:Array = [Enemy_1, Enemy_2, Enemy_3, Enemy_4];

function timedFunction(myTime:Event):void { 
   randomNumber = Math.random()*4; 
   var enemy:AbstractEnemy = new enemyArray[randomNumber](stage);
   stage.addChild(enemy);
   enemy.x = stage.stageWidth;
   enemy.y = Math.random()*(stage.stageHeight - 50) + 10;
   someOtherArray.push(enemy);  //don't want to add this to your array of Class definitions
} 

Тем не менее, вы также можете использовать блиттинг Google и объединение объектов для других, более эффективных методов.

...