2011-11-29 64 views
1

我有四個不同的影片剪輯的數組:AS3.0:複製影片剪輯從陣列到舞臺

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(); 

在每個影片剪輯自己的班級我都有他們的電影速度;

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

一切正常,除了偉大的,當動畫片段之一是在舞臺上和randomNumber得到相同的影片剪輯,從陣列,影片剪輯從舞臺上刪除並重新添加(在它的起始位置)。

我想要它做的是讓movieclip在舞臺上,只是添加它的另一個副本,所以舞臺上有兩個相同的動畫片段。

希望有人有這個答案,或解決=) 非常感謝!

回答

3

如果您確實需要同一個類的新副本,則需要創建一個新實例。所以:

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 
} 

但是,您可能還想谷歌blitting和對象池其他更有效的技術。

+0

謝謝!完美的作品。我會看看blitting和對象池=) – Drudoo

相關問題