2012-04-20 6 views
0

私は多くの壁に当たったかどうかを検出する衝突コードを持っていますが、壁が取り除かれても別のフレームに移動すると、他のフレームでコードを停止させるにはどうすればいいですか?

私は次のフレームに入るときに何とかコードを止めれば助けになると思います。

また、私はこれで新しいです。

これは私のコードです。

function myHitTest(obj:DisplayObject, arr:Array):Boolean { 

    for (var i:int = 0; i < arr.length; ++i) { 
    //for (var item:DisplayObject in arr) { 
     var item:DisplayObject = arr[i] 
     if (obj.hitTestObject(item)) { 
      return true; 
     } 
    } 

    return false; 
} 

var everywall:Array = [w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15,w16]; 

答えて

1

私が確信しているが動作するはずのもう一つの選択肢は、あなたがどのフレームをチェックしているかを調べる前にif文を追加することです。以下のような何か:

function myHitTest(obj:DisplayObject, arr:Array):Boolean { 

    // Check to see if the frame is the one I want the code to run on (1) 
    if(currentFrame == 1) { 

     for (var i:int = 0; i < arr.length; ++i) { 
     //for (var item:DisplayObject in arr) { 
      var item:DisplayObject = arr[i] 
      if (obj.hitTestObject(item)) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 

currentFrameルートのに、currentFrameを探しているなら、あなただけ使用できるキーワードです。特定の場合は、MovieClipMovieClip.currentFrameを使用することができます。これを実行したいフレームを== 1から==に変更します。

2

あなたは不正行為をすることができ、簡単にはeverywall = [];です。これで、16の壁のいずれかとの衝突をチェックしなくなります。

主な問題に対処していないBuuut。この場合の重要なことは、何かが依然としてmyHitTestを呼び出していることです。どのループが終了する必要があるか、またはコールバックが呼び出しているものはリファクタリングする必要があります。これらのヒント以上のものが必要な場合は、より多くのコードを提供してください。

+0

ありがとうございます、両方とも動作します。私は最初のように彼の答えを選んだ。ごめんなさい。 – LochyMacleod

関連する問題