2012-04-05 50 views
0

這是碰撞如何在Flash CS5中暫停'碰撞'?

if(blue2.hitTestObject(_helicopter)) 

      { 
       trace("YOU HIT THE BLOCK!"); 
       ihit = true; 
       _helicopter.x = 76; 
       _helicopter.y = 217; 
      } 

是否可以添加暫停功能在碰撞代碼^?是的,我在那裏寫什麼?謝謝!

回答

1

暫停在您的上下文中有點難以解釋。

舉例來說,如果你的遊戲有一個輸入幀處理,你可以停止所有遊戲動畫一段時間。或者,也許你想凍結一個「你撞上了街區!」消息一段時間,而背景動畫仍然運行。

一種方法是使用計時器。它是異步的,但最終結果是在一段時間(毫秒)後調用一個函數。

在這個例子中,被執行代碼的5秒鐘後,一個匿名函數迴應說時間到了:

// needed imports: 
import flash.events.TimerEvent; 
import flash.utils.Timer; 

if (blue2.hitTestObject(_helicopter)) 
{ 
    trace("YOU HIT THE BLOCK!"); 
    ihit = true; 
    _helicopter.x = 76; 
    _helicopter.y = 217; 

    var timer:Timer = new Timer(5000); // 5-seconds 
    timer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void 
    { 
     timer.reset(); 
     timer.removeEventListener(TimerEvent.TIMER, arguments.callee); 
     trace("5-seconds after hitting the block."); 
    }); 
    timer.start(); 
} 

如果你不喜歡匿名函數,你可以實現它:

// needed imports: 
import flash.events.TimerEvent; 
import flash.utils.Timer; 

if (blue2.hitTestObject(_helicopter)) 
{ 
    trace("YOU HIT THE BLOCK!"); 
    ihit = true; 
    _helicopter.x = 76; 
    _helicopter.y = 217; 

    var timer:Timer = new Timer(5000); // 5-seconds 
    timer.addEventListener(TimerEvent.TIMER, collisionWaitHandler); 
    timer.start(); 
} 

// ... later in its own function: 

protected function collisionWaitHandler(event:TimerEvent):void 
{ 
    var timer:Timer = Timer(event.currentTarget); 
    timer.reset(); 
    timer.removeEventListener(TimerEvent.TIMER, collisionWaitHandler); 

    trace("5-seconds after hitting the block."); 
}