H5游戏开发之 Phaser

最近在研究H5游戏开发,于是进行了一波调研发现了这篇博客解释的很好 HTML5游戏引擎深度测评,有兴趣的可以去看看。
通过各方面的衡量和和业务的考量,最终选择了 Phaser H5游戏框架来开发。本文主要介绍它的api,具体范例,会在第二篇进行全部详细的提供出来;

Phaser

Via: 如果一个类在 via 列中有一个条目,则意味着您可以通过this引用快速访问它。
您可以从任何状态通过 this.camera 控制相机,如果游戏已全局定义,则可以通过 game.camera 控制相机。

属性 Via 说明
Game game 管理启动、创建子系统以及运行逻辑和渲染循环
World world 所有游戏对象所在的游戏世界
Camera camera 相机是您进入游戏世界的视角
Stage stage 舞台是根显示对象

Game States

属性 Via 说明
StateManager state 创建、管理和交换您的游戏状态
State 可以扩展的基本游戏状态对象

Loader

属性 Via 说明
Cache cache 缓存是所有加载的资产存储和检索的地方
Loader load 加载所有外部资产类型(图像、音频、json、xml、txt)并将它们添加到缓存中。由 States preload 方法自动调用
LoaderParser 加载器使用的静态类来处理复杂资产类型的解析

Game Scaling

属性 Via 说明
ScaleManager scale 跨设备管理游戏的大小和缩放
FlexGrid scale.grid 响应式布局网格(试用中)
FlexLayer 响应式网格层(试用中)

Signals

属性 说明
Signal Signal是移相器内部事件系统
SignalBinding 管理哪些回调绑定到Signal

Plugins

属性 Via 说明
PluginManager plugins 安装、更新和销毁插件
Plugin 可以扩展的基础插件对象

Game Objects

属性 Via 说明
GameObjectFactory add 一个辅助类,可以创建任何 Phaser 游戏对象并将它们添加到游戏世界
GameObjectCreator make 可以创建和返回任何 Phaser 游戏对象的辅助类
Group 组可以包含多个游戏对象,并具有搜索、排序、调用、更新和过滤它们的能力
InputHandler *object*.input 如果为输入启用了游戏对象,则该类控制所有与输入相关的事件,包括点击和拖动
Events *object*.events 所有游戏对象级别的事件
Create create 动态 Sprite 和 Texture 生成方法

Display

属性 说明
Sprite 具有纹理的游戏对象,能够运行动画、输入事件和物理
Image 具有纹理和输入但没有物理或动画处理程序的更轻的游戏对象
TileSprite 具有可滚动和缩放的重复纹理的游戏对象
Button 一个带有辅助方法和事件的图像游戏对象,可将其转换为 UI 按钮
SpriteBatch 自定义 Sprite 批次。如果多个 Sprites 共享相同的纹理,则可以显着加快渲染速度
Rope 具有基于条带的纹理的关节游戏对象

Graphics

属性 说明
Graphics 允许您绘制原始形状(直线、矩形、圆形)、设置颜色、描边和填充
BitmapData 为空白 Canvas 对象提供强大的接口。可以用作 Sprite 纹理
RenderTexture 一种特殊的纹理,您可以非常快速地绘制 Sprites

Text

属性 说明
Text 使用系统字体或 Web 字体显示文本,可选择填充、阴影和描边
BitmapText 使用位图字体文件的基于纹理的文本对象
RetroFont 类似于 BitmapText 对象,但使用经典的 sprite 表。每个字符都是固定宽度的

Animation

属性 Via 说明
AnimationManager *sprite*.animations 在 Sprite 游戏对象上添加、播放和更新动画
Animation 动画管理器创建的基础动画对象
AnimationParser Phaser Loader 在内部使用它来解析来自外部文件的动画数据
FrameData 构成动画的 Frame 对象的集合
Frame 动画的单个帧。存储在 FrameData 对象中

Geometry

属性 说明
Circle 由位置和直径组成的 Circle 对象
Ellipse 由位置、宽度和高度组成的 Ellipse 对象
Line 由位于 Line 起点和终点的两个点组成的 Line 对象
Point 由 x 和 y 位置组成的 Point 对象
Polygon 由一系列点组成的多边形对象
Rectangle 由 x、y、宽度和高度组成的 Rectangle 对象
RoundedRectangle 由 x、y、宽度、高度和圆角半径组成的矩形对象

Time

属性 Via 说明
Time time 所有 Phaser 时间相关操作所依赖的核心内部时钟
Timer time.create 包含一个或多个 TimerEvent 的自定义计时器。可以使用一次或设置为重复
TimerEvent time.add 单个时间相关的事件对象。属于 Phaser.Timer

Tilemaps

属性 说明
Tilemap 一张 Tilemap 由一个或多个 TilemapLayer 和关联的图块数据组成。包含用于图块数据操作和 TilemapLayer 生成的方法
TilemapLayer Tilemap 中的单个图层。继承自 Phaser.Sprite 并负责渲染自身
Tileset 包含用于由 TilemapLayer 渲染图块的纹理和数据的对象
Tile 具有相关属性的单个 Tile 对象。地图中的每个图块都存在其中一个
TilemapParser 用于解析外部加载的地图数据的静态类。通常由 Phaser.Loader 直接调用

Math

属性 Via 说明
Math math 包含大量与数学相关的辅助方法,包括模糊逻辑和插值
QuadTree 一个独立的四叉树实现。由 Arcade Physics 使用,但也可以直接使用
RandomDataGenerator rnd 可播种可重复随机数据生成器

Network

属性 Via 说明
Net net 浏览器 URL 和查询字符串相关方法

Particles

属性 Via 说明
Particles particles Phaser 粒子管理器。在游戏循环期间调用并更新任何关联的粒子发射器
Emitter 基于街机物理的粒子发射器。通过 GameObjectFactory 中的 add.emitter 创建
Particle 发射器发射的单个粒子对象。扩展 Phaser.Sprite

Physics

属性 Via 说明
Physics physics 核心物理管理器。提供对所有物理子系统的访问

Arcade Physics

属性 Via 说明
Arcade physics.arcade Arcade Physics 处理器。包含碰撞、重叠和移动相关的方法
Body *sprite*.body 街机物理机构。包含速度、加速度、阻力等相关属性
Weapon game.add.weapon Arcade Physics 驱动的武器插件,用于轻松管理子弹池

Ninja Physics

默认情况下,Ninja Physics 未捆绑在 Phaser 中

属性 Via 说明
Ninja physics.ninja Ninja物理处理器。包含碰撞、重叠和移动相关的方法
Body *sprite*.body Ninja物理身体。包含速度、加速度、阻力等相关属性
AABB AABB Ninja物理体型
Circle 圆形Ninja物理身体类型。
Tile Tile Ninja物理身体类型

P2 Physics

属性 Via 说明
P2 phyiscs.p2 P2物理世界。包含碰撞、重叠和移动相关的方法
Body *sprite*.body P2物理体。包含速度、加速度、阻力等相关属性
BodyDebug P2 Body 对象的调试特定版本。呈现出其形状以进行可视化调试
Material 用于世界响应的 P2 材质,例如摩擦和恢复
ContactMaterial 用于联系响应的 P2 联系材料
CollisionGroup P2碰撞组
FixtureList P2 夹具列表处理程序
PointProxy 负责将 Phaser Game World 代理到 P2 物理值
InversePointProxy 负责将 Phaser Game World 代理为反转的 P2 物理值
Spring 一个 P2 弹簧对象
RotationalSpring P2 旋转弹簧对象

Input

属性 Via 说明
Input input 输入管理器。负责处理所有输入子系统。还负责启用输入的游戏对象
Pointer input.pointer 指针封装了所有与鼠标或触摸相关的输入,无论它是如何生成的。在多点触控系统上,可以同时激活多个指针。在与输入相关的事件中,传递了对相应指针的引用
DeviceButton pointer.leftButton 代表鼠标或笔/手写笔上的按钮
Keyboard input.keyboard 键盘输入处理程序。侦听与设备相关的事件。也可以创建 Key 对象。
Key Key 对象负责监听特定的 Key。由键盘类创建
KeyCode KeyCode 常量在创建新的 Key 对象时使用
Mouse input.mouse 鼠标事件处理程序。侦听与设备相关的事件并将它们传递给活动指针
MSPointer input.mspointer MSPointer 事件处理程序。侦听与设备相关的事件并将它们传递给活动指针
Touch input.touch 触摸事件处理程序。侦听与设备相关的事件并将它们传递给活动指针

Gamepads

属性 Via 说明
Gamepad input.gamepad 游戏手柄管理器负责管理所有连接到设备的游戏手柄。创建 SinglePad 实例
SinglePad input.gamepad.pad<1,4> 代表一个连接的游戏手柄
DeviceButton 表示 SinglePad 实例上的按钮

Tweens

属性 Via 说明
TweenManager tweens Tween Manager 创建、更新和销毁所有活动的补间
Tween 一个补间对象。通过 game.add.tween 创建。由表示补间和任何子补间的 TweenData 对象组成
TweenData TweenData 对象包含与补间相关的所有信息。由 Phaser.Tween 对象创建并属于 Phaser.Tween 对象
Easing 包含可用于 Tweens 的所有缓动函数的静态类

Sound

属性 Via 说明
SoundManager sound 声音管理器控制所有声音对象并可以播放、循环、淡入淡出和停止声音
Sound 声音对象。可直接播放、暂停、停止,并可调节音量
AudioSprite Audio Sprite 是一个 Sound 对象,具有代表音频部分的相关标记数据

System

属性 Via 说明
Canvas 包含 Canvas 创建和操作方法的静态类。比如添加到dom,设置触摸动作,平滑和图像渲染
Device game.device Device 类在启动时检查系统功能和设置,并存储它们供以后访问
DOM 包含 DOM 特定方法的静态类,包括偏移处理、视口校准和边界检查
RequestAnimationFrame game.raf 为核心游戏更新循环抽象出 RAF 或 setTimeOut 的使用

Utils

属性 Via 说明
ArraySet ArraySet 是一个 Set 数据结构(项目在集合内必须是唯一的),它也保持顺序
ArrayUtils 特定于数组的方法,例如 getRandomItem、shuffle、transposeMatrix、rotate 和 numberArray
Color Phaser.Color 是一组辅助颜色操作和转换的静态方法
Debug game.debug 显示游戏对象调试信息的方法集合
LinkedList 一个基本的链表数据结构
Utils 对象和字符串检查和修改的实用方法。包括getProperty、pad、isPlainObject、extend和mixin
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容