1

オブジェクトをヒットしたときにビューコンテナからオブジェクトを削除したいのですが、配列からも削除しますが、ステージから削除したくありません。配列のインデックスがnullであるためです。わかりましたが、どうやってそれを削除しますか?

ありがとう

private function enemySpawnen():void
{
var enemyShip:SpaceShip = new SpaceShip();

Enemy[0] = enemyShip;
Enemy[1] = enemyShip;
}

private function renderEnemy(e:Event):void
{
if(Enemy[0] != null){
viewContainer.addChild(Enemy[0]);

Enemy[0].scaleX = 0.5;
Enemy[0].scaleY = 0.5;

Enemy[0].x = 600;
Enemy[0].y = 400;
}
else{
viewContainer.removeChild(Enemy[0]);==> problem
}
}

if(spaceBar){
var kogel:Kogel = new Kogel();
viewContainer.addChild(kogel);

kogel.scaleX = 0.08;
kogel.scaleY = 0.08;

kogel.x = heli.x + (heli.width/2) -225;
kogel.y = heli.y + (heli.height/2) + 30;

kogel.addEventListener(Event.ENTER_FRAME, shoot);
function shoot(e:Event):void
{
kogel.x +=10;

try{
if(kogel.hitTestObject(Enemy[0])){
Enemy.splice(0,1);
}
}
catch(e:Error){

}
}
4

1 に答える 1

0

エラーelseを含むステートメントは、アイテムEnemy[0]が null の場合にのみ実行されるため、常にエラーがスローされ、完全に不要になります (else ステートメント全体を削除することもできます)。

Enemy[0]配列をスプライスしたため、 null です。あなたがする必要があるのは、配列をスプライスする前に、エラーをスローしている行を用意することです。

if(kogel.hitTestObject(Enemy[0])){
    viewContainer.removeChild(Enemy[0])
    Enemy.splice(0,1);
}

また、配列をつなぎ合わせたので、以前は Enemy[1] だったアイテムが、配列のインデックスがシフトしたため、Enemy[0] によって参照されるようになったことにも注意してください。

于 2012-11-09T18:46:45.080 に答える