1

ヒットテストが登録されないという問題があります。オブジェクトの 2 つの配列、ladderlist と blocklist があります。メイン キャラクターの 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

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 に答える