我有一个包含四个不同MovieClip的数组:
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自己的课程中,我都以一定的速度拍摄电影;
x -= Math.random()*4+1;
除了当其中一个影片剪辑在舞台上并且randomNumber从数组中获得相同的影片剪辑时,一切都很有效,影片剪辑将从舞台中移除并再次添加(在其开始位置)。
我想要它做的是让电影剪辑在舞台上,只需添加另一个副本,所以舞台上有两个相同的动画片段。
希望有人有这个答案,或者解决方法=) 非常感谢!
答案 0 :(得分: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和对象池为其他更有效的技术。