H5小遊戲-貪喫蛇

 代碼


phaser是一個html5的開源遊戲框架,官網http://phaser.io/news

只考慮應用,而不是開發phaser本身,只需要下載phaser.min.js和phaser.js即可

phaser是一個基於state的遊戲框架,整個遊戲生命週期就是從一個state跳轉到另一個state

有幾個state是遊戲必須的,比如

preload: 預加載資源

create:初始化

update:運行

preload一般也就是隻做預加載(不小心把game.add.sprite()加入preload,結果瀏覽器瞬間吞掉2G內存),

create創建各種sprite,audio等,一個靜態的場景

update會被頻繁調用,一般會做一些碰撞檢測,修改sprite狀態等

貪喫蛇中的流程

preload -> create -> play

以上爲三個狀態,最後的play中包含了一個update() state, 實現所有的貪喫蛇邏輯


state是什麼?

只要包含preload/create/update之一的就一個狀態  (整個遊戲是一個state,包含create/preload/boot等state,而

每一個state本身也可以包含create/preload/boot)


state之間如何跳轉?

game.state.add() 增加state

game.state.start() 跳轉到另一個state


動畫如何實現?

受到MFC的MVC模式的影響,最初以爲所有動畫都是update()中實現的,可惜這是一個錯誤的理解。。。

update()因爲調用頻繁,所以最好不要在其中有過於複雜的操作,遊戲中的動畫可以通過以下幾個途徑實現動畫

a) game.add.tileSprite()/sprite.animations():這類函數本身自帶動畫,適合一些sprite自身不需要交互的動畫,比如星星閃爍,小鳥山東翅膀等動畫

b) timer()/mouse:相應定時器和鼠標輸入,這個是通過相應的回掉函數實現

c)update(): 遊戲中主要的邏輯都在最後一個state的update()中實現,比如碰撞檢測,文字顯示,事件觸發等,都是通過在update()中修改各種狀態參數實現的



實現中遇到的一個問題:

Phaser.Physics.enable() 這個函數始終提示not a function?? 明明doc中有,下載到最新的phaser版本依然not a function,最後用Game.Physics.enable()替代了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章