必要时从游戏中移除子弹和敌舰

时间:2014-02-07 10:11:31

标签: actionscript-3 flash

我目前正在撰写一款简单的太空战争游戏(截图可在此处找到:http://prntscr.com/2q9juj

敌舰随机从屏幕右侧进入。我应用bullet.hitTestObject(enemyShip)来检查子弹是否接触敌舰。

如果它命中,我需要从游戏中移除子弹和敌舰。(我试图调整其alpha值但不能移除但是经过一段时间后,我的游戏开始缓慢运行)

所以,这是我的相关代码:

for each(var bullet:Bullet_ in bullets){
    bullet.x+=2;
    for each(var enemyShip:Enemy in enemies){
        if(bullet.hitTestObject(enemyShip)){
            enemyShip.alpha=0;
            bullet.alpha=0;
            // I want to remove both enemyShip and bullet here.
                    //**EDIT: I solved my problem writing 2 lines :**
                      bullets.splice(bullets.indexOf(bullet),1);
                      enemies.splice(enemies.indexOf(enemyShip),1);
        }
    }

}

有人帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

像这样使用`removeChild',(我不知道你是如何将它们添加到显示列表中的)

for each(var bullet:Bullet_ in bullets)
{
    bullet.x+=2;

    for each(var enemyShip:Enemy in enemies)
    {            
         if(bullet.hitTestObject(enemyShip))
         {              
              removeChild(bullet);
              removeChild(enemyShip);

              //here update you array(s) accordingly 
         }
    }

}

答案 1 :(得分:0)

我想我可以解决它,我不知道......但是尝试这个改变:

for each(var bullet:Bullet_ in bullets){

    bullet.x+=2;

    for each(var enemyShip:Enemy in enemies) {
        if (bullet.hitTestObject(enemyShip)) {
            enemyShip.parent.removeChild(enemyShip);                
            bullet.parent.removeChild(bullet);

        }
    }
}