好的,所以我有一支激光枪,它正在发射激光(好吧,duh),叫做laser_mc,我现在正在放入敌人。但有一个问题。当我添加名为bad
的敌人时,它们会被添加,移除,然后在其他地方重新出现。
var badadd:bad; badadd = new bad()
addEventListener(Event.ENTER_FRAME, createbad);
function createbad(event:Event):void {
addChild(badadd);
badadd.x = Math.random()*stage.width;
badadd.y= Math.random()*stage.height;
}
addEventListener(Event.ENTER_FRAME, removebad);
function removebad(event:Event):void {
if (laser_mc.hitTestObject(badadd)) {
removeChild(badadd);
}
}
它们被删除并放置在其他地方,因为您在这里使用了enter_frame循环。每次一帧结束时,你的程序都会在一个随机位置添加相同的敌人。所以它在一个随机的位置添加,删除它,然后再在一个随机的位置添加。
你可能想尝试这样做:
设置一个for循环并用敌人填充数组。将数组声明为类属性 EnemyArray。像(伪代码):
for i = 1 to 10
var tempEnemy = new Enemy()
EnemyArray[i].push(tempEnemy) // put the enemy in the array
现在当你需要添加一个敌人时-它已经被实例化了,所以你只需要输入:
addChild(tempEnemy[index]);
现在您可以循环遍历数组以进行命中测试,等等。
如果这太概念化了,请告诉我,我会把代码写得更详细一些。