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()替代了