在数组中,如果不存在的话,将对象从舞台上删除



当我击中对象时,我想将我的对象从viewcontainer中删除点击作品,也从数组中删除,但我不想将其从舞台上删除。因为阵列中的索引为空。好的,但是如何删除它?

谢谢

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){
}
}

包含您错误的else陈述只有在项目Enemy[0]为null时才会运行,因此它将始终丢弃错误,并且完全不必要(您可能可能是不必要的以及删除全部语句)

Enemy[0]是无效的,因为您将其剪切了。您需要做的是要在之前丢弃错误的行,您拼接数组。

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

也要记住,既然您已经拼接了数组,那么曾经是敌人的项目[1]现在被敌人引用[0],因为您的数组表明已移动。

最新更新