2011-11-24 69 views
1

我试图创建一个Flash射击游戏作为我的第一个项目。但是当他们被击中或离开屏幕时,我不能移除子弹和敌人。 我已经在这个问题上多次搜索了一个解决方案,并复制了其中的4个(加上我试过我自己的想法),但他们不工作。 碰撞检测电流的方法是:如何在射手游戏中移除碰撞中的子弹?

for each(var enemy:Enemy in basicEnemies) 
    { 
     for each(var projectile:Projectile in bullets) 
     { 
      if (projectile.x > enemy.x - enemy.width/2 && 
      projectile.x < enemy.x + enemy.width/2 && 
      projectile.y > enemy.y - enemy.height/2 && 
      projectile.y < enemy.y + enemy.height/2) 
      { 
       trace("collision!"); 
      enemy.enemyHealth = enemy.enemyHealth-5; 
      projectile.projectileIsPassive = true; 
      } 
    } 

我的问题是:如何删除的敌人和子弹? removeChild和splice? 如果这个问题得到解答,我将不胜感激。

+1

非常仔细。 –

+2

为什么你不能删除它们?难道你不能像添加它们一样从“子弹”集合中删除它们吗? –

+0

当我尝试删除它们(removeChild(子弹[i]))它引发错误:参数子项必须为非空。 –

回答

0

是的,你会执行removeChild并将它们从容器列表中剪切掉。 removeChild(projectile);...

+0

[故障]异常,信息= TypeError:Error#2007:参数子项必须为非空值。 –

+0

你试图删除已经为空的东西。因为'子弹[i]'返回null,只要'removeChild(projectile)'; – felipemaia

+0

[故障]异常,信息= ArgumentError:错误#2025:提供的DisplayObject必须是调用者的孩子。将一个方法将变量更改为false,就像它在上面的代码框中一样,然后根据变量进行排序并使用projectileIsPassive = true work删除那些变量? –