2011-03-09 50 views
0

我想檢查我的角色是否擊中了數組中的任何項目(true)並且他不是(false)。現在布爾值位於for循環中,因此每次程序更新時都會返回一個「true」和多個「false」語句。我只想要一個返回,如果角色正在擊中數組中的影片剪輯,則返回true,如果不是,則返回false。下面的代碼:as3命中測試數組從布爾型多重返回

for(var i:int = 0; i<steps.length; i++){ 
      if(steps[i].hitTestPoint(hero.x,hero.y+hHeight/2, true)){ 
       onSteps = true; 
      }else{ 
       onSteps = false; 
      } 
} 
+1

你想退出循環的第一個真正的你找到返回true。 – Tim 2011-03-09 15:12:52

回答

0

我想你想要的是一個函數,通過steps數組,然後一旦命中就返回true。如果沒有命中,則默認返回「false」。

function checkForHits():Boolean { 
    for(var i:int = 0; i<steps.length; i++){ 
     if(steps[i].hitTestPoint(hero.x,hero.y+hHeight/2, true)){ 
      return true; 
     } 
    } 
    return false; 
} 
+0

非常感謝!得到它與該功能的工作。 – 2011-03-09 17:23:19

+0

@vince沒問題:)如果你的問題解決了,你可以點擊我的答案旁邊的「接受」複選標記 – 2011-03-09 18:20:53

+0

對不起,只是檢查了你的答案。再次感謝。 – 2011-03-19 08:54:21

0

Array對象已有的方法

some(callback:Function, thisObject:* = null):Boolean 

其中在的情況下返回true,本案Array滿足任何元件的回調函數,false沒有元件的Array滿足回調函數。

這裏的文檔:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#some()

您的代碼將是這樣的:

onSteps = steps.some(function (item:*, index:int, array:Array):Boolean 
      { 
       return item.hitTestPoint(hero.x,hero.y+hHeight/2, true); 
      });