2012-04-20 70 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你可以使用關鍵字。如果你想要一個特定的MovieClip,你可以使用MovieClip.currentFrame。將== 1更改爲==您希望運行的任何幀。

2

你可以作弊,只需st everywall = [];。這將不再檢查與16個牆壁中的任何一個的碰撞。

Buuut沒有解決主要問題。在這種情況下重要的是東西仍然呼籲myHitTest。無論調用哪個循環需要退出,或者任何回調調用,都需要重構。如果你需要更多的提示,請提供更多的代碼。

+0

謝謝,無論工作。我首先選擇了他的答案。抱歉。 – LochyMacleod 2012-04-21 00:03:59