ここに問題があります。5秒ごとにspawnEnemiesが起動されます。ムービークリップを作成し、位置を設定して、ステージと配列に追加します。関数checkBulletで、弾丸が敵の1つに当たったかどうかを確認します。含まれている場合、弾丸と敵はステージから削除され、敵はアレイからスプライスされます。しかし、敵に当たるとエラーがスローされます。
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;
}
}