簡體   English   中英

AS3.0 Hittest未注冊

[英]AS3.0 Hittest not registering

我遇到未注冊的hittest問題。 我有兩個對象數組,梯形列表和塊列表。 我正在檢查我的主角mainchar是否使用嵌套循環命中了enterframe事件上的任何對象。 我有一個布爾變量MCFall,如果它碰到任何一個對象,則應該更改。 如果MCFall為false,即mainchar碰到梯子或塊,則循環將中斷。 我目前遇到的問題是我的代碼無法檢測到mainchar是否達到目標。 相關代碼如下。

addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
function fl_EnterFrameHandler(event:Event):void{    
  //check if touching ANY ground
  blockCheckLoop: for (var i: int=0; i<=blocklist.length; i++){
    if (blocklist[i].target.hitTestObject(mainchar.target)){
      MCFall = false;
      MCmovespeed = 4;
    }//endif
    else{
      ladderCheckLoop: for (var j: int=0; j<=ladderlist.length;j++){
        if (ladderlist[j].target.hitTestObject(mainchar.target)){
          MCFall = false;
          MCmovespeed = 4;
        }//endif
        else{
          MCFall = true;
          MCmovespeed = 0;
        }//endelseif
        if(MCFall == false) break ladderCheckLoop;
      }//endforj*/
    }//endelseif
    if(MCFall == false) break blockCheckLoop;
  }//endfori
}//endenterframe

我已經用blocklist測試了hittest,而沒有循環檢查mainchar是否達到要求,這是可行的。 MCmovespeed只是我使用的一個變量,因此mainchar在跌落時不能側向移動。 任何幫助,將不勝感激,謝謝。

您最好使用以下代碼:

for(var b:int = 0; b

var currentBlockList:blockList_class = new blocklistArray[b];

for(var m:int = 0; m

var currentMainChar:mainChar_class = new maincharArray[m];

if(currentBlockList.target).hitTestObject(currentMainChar.target)){

    trace("hit");
}

}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM