2012-08-02 14 views
0

好吧,我有我的主類的數組,看起來像這樣:測試反對則hitTest對象數組的值

objectArray:Array = [ ]; 

我有創造不同的物品,如硬幣,敵人,心等三大功能。這些添加的項目都被推入objectArray。我想寫這個功能hittests我的子彈對這些對象:

private function checkCollisions() :void{ 
    var bullet:MovieClip; 
    for (var j:int = 0; j < objectArray.length; j++){ 
     object = objectArray[j]; 
     for(var i:int = 0; i < bulletArray.length; i++){ 
      bullet = bulletArray[i]; 
      if (objectArray[j].hitTestPoint(bullet.x, bullet.y, true)) { 
       container.removeChild(bullet); 
       bulletArray.splice(i,1); 

       if (objectArray[j] == Enemy[j]){ 
        container.removeChild(objectArray[j]); 
        objectArray.splice(j,1); 
        trace("enemy hit"); 
       } 
      } 
     } 
    } 
} 

問題是從這一部分來:

if (objectArray[j] == Enemy[j]){ \\problem 
    container.removeChild(objectArray[j]); 
    objectArray.splice(j,1); 
    trace("enemy hit"); 
} 

我一直在試圖找出一種方法來測試對象這是針對諸如「敵人」這樣的特定值而被擊中的,以便我可以根據被擊中的對象類型產生不同的結果。無論我嘗試什麼樣的測試組合,我似乎都無法迴應。當我跟蹤objectArray[j]時,它會產生[object Enemy]。有沒有不同的測試數組值的方法?

回答

2

聽起來好像要測試objectArray[j]中的對象是否爲Enemy對象。您可以使用is運營商做到這一點:

if (objectArray[j] is Enemy) 
{ 
    container.removeChild(objectArray[j]); 
    trace ("enemy hit"); 
} 

編輯

而且,你可能要遍歷子彈/對象數組按相反的順序,因爲你可能從數組刪除條目你迭代它。

for (var j:int = objectArray.length -1; j >= 0; j--){ 
// then do the same with the bullet array 
+0

這就像一個魅力。我很感激! – 2012-08-02 22:16:26