Phaser新闻联播

2019-02-10 周日 by 黄复雄.

播报Phaser共和国的街谈巷议,飞短流长。随时更新。

2019-2-22

我给Phaser官方翻译的[Phaser 3 入门实例教程/making-your-first-phaser-3-game]翻译完成。

2019-2-20,Phaser World Issue 141摘要

Richard Davey已经做了一个工作流,可以在几秒钟内把整个Phaser API文档导出为JSON,再转为SQLite;可以每个版本做一份。这样一来,Phaser Editor、VSCode、Sublime等编辑器就可以利用这些SQLite数据,做出方便的插件;Phaser文档也可以方便地集成到官网中(目前是在GitHub上),使用方式也很更灵活,还能增加官网广告的收入。

作者计划翻译Getting StartedMaking your First Game为多国语言,尤其需要翻译为中文和日语的人。有意者可发邮件到rdavey@gmail.com。

2019-2-10,Phaser World Issue 139摘要

Phaser 3.16于2月5日发布(实际版本号是3.16.1,而不是3.16.0)。新版及发布日志在此。该版开发历时4个月。

Most importantly of all, though, it finishes the Phaser 3 core feature set. /最关键的是,它完成了Phaser3的核心特性。

文档有大幅度改善,目前仅差748条(总条目超过16000余条)。

TypeScript定义文件亦有大改善,但新的事件未处理。

输入系统有重要更改

此前,输入系统通过一个事件队列(event queue)来工作。所有原生DOM事件,如键盘、触摸、鼠标,存储于输入管理器(Input Manager)的一个队列中,将在游戏的下一步进行处理;处理后清除。在处理的同时,内部事件,比如pointerdownkeyup被发送到你的游戏代码。 这样能保证同时性,副作用是,在事件处理中,你不能做诸如打开外部浏览器窗口、进入全屏模式之类的事——因为他们不是“真的”事件,所以不能通过浏览器的安全检查。为此添加了诸如addUpCallback之类的方法,用于尝试、提供这类支持(不过键盘事件始终不可能)。

3.16版变了。在同一个调用中,DOM事件立即激发对应的内部事件。所以,如果你点击画布,游戏中收到的pointerdown事件仍旧是原生事件处理器的一部分,所以这时你可以随意做诸如进入全屏模式、打开外部窗口之类的事,而不会有任何浏览器的警告或应急操作。不过这就意味着,处理器被调用时的点位(point)不再始终一致,也不再与请求动画帧(Request Animation Frame)的更新速度绑定。经过尽可能的测试,目前看工作表现跟以前一样。响应性能略有提升,因为移除了处理事件的零碎耽搁。

如果出现问题,很容易切换回原来的版本:在游戏配置(Game Config)中,做一个input对象,添加属性queue: true。但这个选项不久将会移除。

输入处理有很多更改,详见日志列表。比如:

3.16可以处理游戏/画布外输入事件。可用三个事件:POINTER_DOWN_OUTSIDE、GAME_OUT和GAME_OVER。比如,热点离开画布时用来暂停游戏。

键盘事件也不再像以前一样,会被浏览器截留。

重要新特性:外部场景文件

现在可以使用新的Loader文件类型"SceneFile"实时加载外部场景文件。这样就不必预先把所有可能用到场景打包,可以随时在服务器端更新场景,或根据用户端信息选择场景。用法:

this.load.sceneFile('MiniGame520', 'js/minigames/520.js');
// `MiniGame520`是类名

JS文件下载好后,会通过一个脚本标签添加到DOM,并被场景管理器接收。然后可以用它的key启动:

this.scene.start('game520');
// 'game520'是key

后续事项

  • 处理3.16的问题
  • 完成Spine插件
  • 完成更多文档
  • 3.17(会是维护版,很快出来)后大改Containers

Fork me on GitHub