2011-11-24 74 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刪除那些變量? –