如何爲HTML5 Canvas遊戲創建好計時器? 我正在使用RequestAnimationFrame(http://paulirish.com/2011/requestanimationframe-for-smart-animating/)HTML5畫布遊戲計時器
但是對象的移動速度太快。
喜歡的東西我的代碼是:
但是,如果我按UP_ARROW播放器不移動一個像素,但移動5,8,或10個或更多或更少的像素。如果按UP_ARROW播放器移動1個像素怎麼辦?
感謝您的幫助。
如何爲HTML5 Canvas遊戲創建好計時器? 我正在使用RequestAnimationFrame(http://paulirish.com/2011/requestanimationframe-for-smart-animating/)HTML5畫布遊戲計時器
但是對象的移動速度太快。
喜歡的東西我的代碼是:
但是,如果我按UP_ARROW播放器不移動一個像素,但移動5,8,或10個或更多或更少的像素。如果按UP_ARROW播放器移動1個像素怎麼辦?
感謝您的幫助。
問題是,您在每個間隔增加值的方法會產生不一致的結果。聽起來就像在你的情況RequestAnimationFrame觸發速度太快,但在其他情況下 - 如在一個慢CPU - 他們會觸發較慢,給出不同的結果。
所以,遊戲動畫需要基於「絕對」時間。也就是說,當UP_ARROW被按下時,你需要「記住」以及玩家在那一刻的位置。然後,當您調用update()時,確定經過了多長時間,並基於此,以及所需的速度(以每秒像素數爲單位),將播放器移動到適當的位置。它使你的代碼更加複雜,但不幸的是,這就是它如何完成的。
這個問題在網上討論很多。這裏有一篇我發現的隨機文章(基於Flash,但沒關係): http://www.flashgamesclassroom.com/classroom/actionscript/frame-based-vs-time-based-animation/
你可以谷歌「基於時間的遊戲動畫」來研究更多。
我個人從計時器(大致的時間間隔)和每個主要「事件」(用戶密鑰,服務器發送的其他玩家數據等)調用我的重繪函數。 –
請參閱! http://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe – Hydro