好的,所以我有一把激光枪,它正在拍摄名为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);
}
}
答案 0 :(得分:1)
它们被删除并放在别处,因为你在这里使用了一个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]);
现在你可以在数组中循环进行命中测试等等。
让我知道这是否过于概念化,我会更多地编写代码。