本節書摘來自華章出版社《HTML5 2D游戲編程核心技術》一書中的第1章,第1.3節特別功能,作者[美] 戴維·吉爾里,更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。
1.3 特別功能
Snail Bait游戲有3個特別的功能,既能為游戲帶來加分,又能讓游戲測試更加便捷,它們分別是:
開發者后門
時間系統
粒子系統
當你按下Ctrl+D組合鍵時,Snail Bait游戲就會顯示開發者后門,如圖1.11所示。當開發者后門處于可見狀態時,你可以通過控制游戲時間流逝的速率來緩慢地運行游戲,以便觀察游戲中諸如碰撞檢測這樣的事件是如何發生的。反過來,你也可以加速運行游戲,從而獲得游戲的最佳運行速率。
你可以打開碰撞矩形以便更好地觀察碰撞是如何發生的;如果煙霧孔阻礙了你的視野,你可以通過不選煙霧的復選框來關掉煙霧。你也可以調節Snail Bait游戲中顯示游戲運行緩慢提示板的閾值,如圖1.8所示

或者你也可以完全關掉它,這樣你就可以在沒有閾值限制的前提下,測試慢幀的速率。
當測試游戲的某個特定內容時,你可以避免運行之前的游戲內容。除了游戲canvas元素頂部的控制鍵之外,開發者后門還在canvas元素的底部顯示了一個尺子,用于顯示背景水平滾動的像素點數。
你可以通過設置這些值以便在一個指定的水平位置上重啟游戲,這樣可以避免重新運行之前的游戲。為了方便,在開發者后門可見的情況下,你可以簡單地拖曳游戲,包括背景和所有的sprite對象,來改變跑步小人的水平位置。
開發者后門可以讓你在游戲中通過Snail Bait游戲的時間系統控制時間流逝的速率。在Snail Bait游戲中發生的所有事件都依賴于當前的游戲時間,在游戲啟動時,時間就開始流逝;例如,當跑步小人開始跳躍時,游戲記錄當前的時間,之后通過跳躍序列一幀一幀地移動跑步小人,幀數依賴于跑步小人開始跳躍之后有多少時間流逝。
圖1.11 Snail Bait的開發者后門

Snail Bait游戲默認的時間模式是使用真實時間代表游戲時間。但是Snail Bait游戲的時間系統也可以不使用真實時間;例如,時間系統可以持續地使用真實時間的一半,這樣游戲運行的速率就會降為原來的1/2。
除了可以讓你控制游戲時間流逝的速率之外,Snail Bait游戲的時間系統也是一些特效的源泉。當跑步小人撞到一個壞家伙并爆炸時,Snail Bait游戲會在轉換下一條生命時放緩時間。一旦轉換完成,Snail Bait游戲就將時間恢復正常,游戲重新開始。
最后,Snail Bait游戲使用兩個粒子系統來在背景中完成煙霧和火焰特效。在第16章,我們將進一步學習粒子系統,你可以在完成學習后創造出類似的特效來。
既然你已經對該游戲有了深層次的理解,接下來讓我們看一看代碼。
Snail Bait游戲的代碼統計(代碼行數)
`JavaScript:5230
CSS:690
HTML:350
Snail Bait游戲的代碼詳述
snailbait.js:3740
JavaScript支持代碼:1500
sprite對象初始化數據:500
創建sprite對象:400
sprite對象的行為實現:730
事件處理:300
用戶交互:225
聲音:130
`