1

我遇到了一个未注册的热门问题。我有两个对象数组,梯形列表和阻止列表。我正在检查我的主角 mainchar 是否通过嵌套循环命中了 enterframe 事件中的任何对象。我有一个布尔变量 MCFall,如果它碰到任何一个对象,它应该会改变。如果 MCFall 为假,即 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 在下降时不能横向移动。任何帮助将不胜感激,谢谢。

4

1 回答 1

0

您最好使用以下代码:

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");
}

} }

于 2012-12-30T08:14:25.137 回答