Last-Modified: {docsify-updated}
phaser3
當前已使用到了 phaser v3.55.2 版本
暫時未更新文檔內容,有問題可以直接問我
以下文檔是我在 phaser v3.16 以前整理的: (可能很多已不堪使用了)
官方文檔:
refs (phaser 3 跟 2 & CE 截然不同):
中國官網鏡像: http://api100.net/phaser3/
學習 phaser3
2018/06/19 更新: 官方文檔已更新許多…所以這邊暫時不繼續寫
step1 創建遊戲
// 看了官方的教學文檔: https://phaser.io/tutorials/making-your-first-phaser-3-game
// 文檔似乎不完整!? 看不懂 >"<
// 這裡直接貼 code 說明
// 創建遊戲
// https://github.com/photonstorm/phaser/blob/master/src/boot/Config.js
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: {
// 一個場景的生命週期
preload: function () {
// 預加載
},
create: function () {
// 建立時
},
update: function () {
// 每次更新時 執行
}
}
};
// 補充說明 scene: array<Scene> or Scene
// 如果是 array, 第一個將當作預設 Scene
// https://github.com/photonstorm/phaser/blob/master/src/boot/Game.js
var game = new Phaser.Game(config);
// 如果不在 config 裡 添加 scene, 可以使用場景管理器
// game.scene = Phaser.Scenes.SceneManager (可以從 Game.js 看出來)
// api: https://photonstorm.github.io/phaser3-docs/Phaser.Scenes.SceneManager.html#methods
game.scene.add('init', InitScene, true)
step2 場景
// 以 InitScene 為例
// https://github.com/photonstorm/phaser/blob/master/src/scene/Scene.js
import Phaser from 'phaser'
import { ajax } from '@/helper'
import Text from '../component/Text.js'
export default class InitScene extends Phaser.Scene {
constructor (config) {
// https://github.com/photonstorm/phaser/blob/master/src/scene/Settings.js
super(config)
}
preload () {
// 要加載的資源
// this.load = Phaser.Loader.LoaderPlugin
// https://photonstorm.github.io/phaser3-docs/Phaser.Loader.LoaderPlugin.html#methods
this.load.image('key', 'path/to/xxx')
}
create () {
let config = this.cache.game.config
// this.add = Phaser.GameObjects.GameObjectFactory
// https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.GameObjectFactory.html#methods
let cover = this.add.image(0, 0, 'key')
let text = this.add.text(0, 0, '遊戲開始', {})
// 將 cover 以遊戲畫布,置中
// https://github.com/photonstorm/phaser/blob/master/src/display/align/in/Center.js
Phaser.Display.Align.In.Center(cover, this.add.zone(config.width / 2, config.height / 2, config.width, config.height))
// 將 text 放在 cover 的上方 - 中間,並且 偏移 y 值 -985...
Phaser.Display.Align.In.TopCenter(text, cover, 0, -985)
// next scene
this.scene.start('ready')
}
}
step3 官方 examples https://github.com/photonstorm/phaser3-examples
看完 step1 & step2 以後就會發現…直接看 source code 可能會詳細一些
ease map: https://github.com/photonstorm/phaser/blob/master/src/math/easing/EaseMap.js
known-issues
- Text letter style issue https://github.com/photonstorm/phaser/issues/3390