如果不再存在于数组中,则从舞台中删除对象

时间:2012-11-09 17:46:15

标签: actionscript-3

当我点击我的对象时,我想从viewcontainer中删除我的对象 点击工作,也删除阵列,但我不想从舞台上删除它。 因为数组中的索引为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){

}
}

1 个答案:

答案 0 :(得分:0)

包含错误的else声明只会在项Enemy[0]为空时运行,因此始终会抛出错误并且完全没必要(您可能以及删除整个其他声明)

Enemy[0]为空,因为您已将其拼接出阵列。您需要做的是抛出错误的行,之前您拼接数组。

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

另外请记住,既然已经拼接了数组,那么现在Enemy [1]引用的项目现在被Enemy [0]引用,因为你的数组指标已经移位了。