2013-01-22 47 views
0

我是ActionScript新手,我正在嘗試使用時間軸在我的遊戲中觸發某些事件。特別是,我使用時間線來觸發槍支的火災事件,以便當火災動畫到達特定框架時,​​會產生子彈。在槍類(Enter_Frame)中,我檢查鼠標是否被按下,最後一次拍攝和當前時間之間的時間比冷卻時間長,如果一切都檢出,我會播放動畫。Flash中的基於時間的動畫

if (time - lastShot > cooldown) 
{ 
    canShoot = true; 
    lastShot = time; 
} 
if (mouseHold && canShoot) 
{ 
    play(); 
} 

當幀速率被帶到其中冷卻又是之前的全動畫不能播放的點的下方這就產生了一個問題。在這種情況下,子彈以較低的幀頻發射較慢。

此外,更高的幀速率使得槍更能響應鼠標輸入,因爲火幀比較低的幀速率更快。

這個目標顯然是讓遊戲完全幀率獨立。我希望能夠根據槍的冷卻速度減慢或加快動畫的幀頻。

什麼是使動畫在特定時間段內播放而不跳過我在時間線上放置的動作的最佳方式?

回答

0

這聽起來像你在正確的軌道,但接近這個錯誤的方式。檢查一下Timer類,它是獨立於幀率的,並且會對你有很大的幫助。

var my_timer = new Timer(1000,0); //in milliseconds 
my_timer.addEventListener(TimerEvent.TIMER, catchTimer); 
my_timer.start(); 


function catchTimer(e:TimerEvent) 
{ 
    trace("event fired"); 
}