我这里有个问题。每五秒 spawnEnemies 被触发一次。它创建一个movieclip,设置它的位置并将它添加到舞台和一个数组中。在函数 checkBullet 中,我检查子弹是否击中了一个敌人。如果是这样,则将子弹和敌人从舞台上移除,并将敌人从阵列中拼接起来。但是一旦我击中敌人就会抛出一个错误:
TypeError:错误#1010:术语未定义且没有属性。
如果我注释掉 arrayEnemies.splice(i,1) 行,它可以正常工作,但不会从数组中删除。这本身不是问题,但我自然不喜欢在我的数组中保留不必要的数据。对此有什么帮助吗?
function checkBullet(event:Event) {
if(stage.contains(mcBullet)) {
for(var i:int = 0; i < arrayEnemies.length; i++) {
if(arrayEnemies[i].hitTestPoint(mcBullet.x, mcBullet.y, true)) {
stage.removeChild(mcBullet);
this.removeChild(arrayEnemies[i]);
arrayEnemies.splice(i,1);
bulletOnStage = false;
}
}
if(mcBullet.x > 800) {
stage.removeChild(mcBullet);
bulletOnStage = false;
}
}
}
function spawnEnemies(event:TimerEvent) {
var enemie:MovieClip = new box_mc();
enemie.name = "mcBox" + event.currentTarget.currentCount;
enemie.x = 850;
enemie.y = Math.floor(Math.random()*(1+155)+255);
addChild(enemie);
arrayEnemies.push(enemie);
}
function moveEnemies(event:Event) {
for(var i:int = 0; i < arrayEnemies.length; i++) {
arrayEnemies[i].x -= 5;
}
}