2012-08-08 80 views
0

爲什麼會發生這種情況?object.hitTestObject(other_object)被執行多次

當兩個物體相互接觸,然後我把跟蹤,他們告訴我很多信息:

private function onEnterFrame(e:Event):void{ 

     e.target.x += 4; 
     var moved = false 
     if(!moved) 
     { 
      for(var i = 0; i < arrows.length; i++) 
      { 

       if(e.target.hitTestObject(arrows[i])) 
        { 

         trace('boom'); 
         moved = true; 
         break; 
        } 

      } 
     } 

所以這裏的單詞「潮」寫入多次,而不是1點時,如何解決這個問題?

回答

0

你正在檢查每一幀的命中測試,所以每次它給你的命中測試的價值。我認爲你的問題是你在循環內部定義了你的布爾變量「移動」,它失去了它的目的,因爲當它進入循環時它總是錯誤的。嘗試在函數外部定義布爾變量。這將有助於解決問題:)

+0

還爲什麼當執行enterOnFrame方法時,顯示第一個對象但他沒有與其他movieClip聯繫,但hitTest的條件返回true?這是爲什麼? – 2012-08-08 10:14:15

+0

哇我找到了答案,是因爲目前的目標是它自己:))) – 2012-08-08 10:17:26

+0

(e.target == arrows [i]) - true – 2012-08-08 10:17:44