2014-11-22 27 views
0

所以,我創建了一個子彈和鯊魚的列表,這兩個列表都包含一個定義數量的每個對象。影片剪輯我通過創建一個名爲擊中格的影片剪輯中定義的擊中格,並賦予它一個實例名稱「hitto」重新定義對象的hitbox?

當我測試與hitto和子彈碰撞鯊魚裏面,它的工作原理,但我得到這個隨機輸出誤差

TypeError: Error #2007: Parameter hitTestObject must be non-null. 
    at flash.display::DisplayObject/_hitTest() 
    at flash.display::DisplayObject/hitTestObject() 
    at Missile/hitShark() 

子彈和鯊魚

function hitShark(e:Event):void { 
    for each (bullet in bullets) { 
     if (bullet.parent==null) { 
      bullets.splice(bullets.indexOf(bullet),1); 
     } else { 

      for each (shark in sharks) { 
       if (shark!=null&&bullet.hitTestObject(shark.hitto)) { 
        if (bullet.parent!=null) { 
         bullet.gotoAndPlay(2); 
         shark.health -= 1; 
         shark.gotoAndPlay(2); 
         //Removing while iterating over list causes errors; 
         bullets.splice(bullets.indexOf(bullet),1); 
         trace("HIT"); 
        } 
       } 
      } 
     } 
    } 
} 

之間的碰撞測試向我要一些更多的澄清,我是新來的AS3所以我的解釋可能會造成混亂。

截圖幫助可能嗎? http://prntscr.com/58u6ou

回答

2

那麼閃存是這樣做的,它需要一些時間來正確添加movieclip到階段。這就是爲什麼Event.ADDED_TO_STAGE存在,請閱讀this article以更好地理解它。

但是我會說你會很簡單的使用一個簡單的if語句來確保shark和shark.hitto被正確初始化並且坐在舞臺上。

if(shark && shark.hitto) { 
    // Do collisions 
} 
+0

作品,謝謝。 – Trows 2014-11-22 13:21:58