RC2同样是一次重要的升级。本文首先对这三个亮点进行介绍。再扼要介绍部分改动。
增量编译是用于开发调试迭代过程中实现零等待编译。即只编译修改或者新增的ts类源代码。
用法
增量编译的用法是:
egret quickbuild
增量编译使用与原先的标准编译( egret build
)不同的两种编译方法,无法完全取代标准编译。
而且标准编译所支持的引擎编译、指定运行时等选项增量编译均不支持。
最佳实践
实际开发中最佳的开发流程是:
egret build -e
) egret quickbuild
) egret publish
)前,再进行一次标准编译( egret build
) egret bulid -runtime native
) 注意
需要注意的一点,就是增量编译的分析过程与标准编译不同,标准编译会分析每个ts类源代码中对其他ts类的引用,从文档类开始分析,因此项目中没有用到的类标准编译会忽略。而增量编译完全忽略源代码ts类之间的引用关系,直接进行扁平式编译。
脏矩形只重绘屏幕发生改变的区域,这在Egret 1.5时代已经实现,但旧版脏矩形需要手(ren)工(rou)设置,对于复杂的游戏来说,用脏矩形优化过程无异于一场噩梦。
白鹭官方已经对这部分进行了大刀阔斧的改进,实现了自动脏矩形。
熟悉Flash的朋友都知道,这项技术已经在提升Flash Player性能上取得了巨大成功。今天白鹭的产品再次将其应用到旗舰产品Egret和Lark上。脏矩形的工作方式如下图所示:
红框封闭的区域是脏矩形,也就是说引擎运行时只需要渲染这部分。自动脏矩形,不但可以极大的提高渲染性能,还能尽可能的节省设备电量。另外,当检测到屏幕刷新面积已经到临界点(大约占舞台面积95%)时,直接进入全屏刷新模式,因为这种情况脏矩形已经无法改善渲染性能了。
注意,由于加入该项功能对Egret内核有大规模的改动,稳定性有待进一步验证。因此并没有在RC2以一键安装方式提供,以防止产品级开发出现意外的问题。白鹭官方考虑到让广大喜欢尝鲜的开发者来体验,在github上提供了专门的 渲染架构体验分支 。
由于官方推荐保持60fps,2.0 RC2之前漫长的时期,设定帧频还需要用一种类似hack的方法(具体 官方FAQ 有说明)。
在2.0 RC2版本, frameRate
再度回归!通过在程序中可以访问stage的位置使用 stage.frameRate
即可以直接设置帧频,并且可以随时改变。
目前的版本帧频设置有个限制,只能设置被60整除的帧频,其他数值将会被拟合为符合这个标准的值。
广大JS资深开发者期盼的JS创建项目的方式,其实在RC1已经提供,但有些小bug,在本次发布的RC2已经在不同的操作系统可正常使用。创建项目使用:
egret create_js HelloJS
启动项目使用:
egret startserver HelloJS
在项目创建时,我们提供了 egret.js
和 egret.min.js
,开发者只需在发布时将 egret.js
切换为 egret.min.js
即可。
坚持使用JS而不刁TS的开发者必然是资深玩家(官方仍然建议,开发Egret首选标准的TS语言),因此暂无太多说明,后期白鹭官方会根据开发者反映,推出相应的详细教程。
其余功能都是较小的改动,在这里简要说明。
几何运算模块增强
Matrix
增加了 createBox
和 createGradientBox
等一系列API。
其中使用 createBox
方法可以直接定义生成的矩阵的缩放、旋转和平移效果。
Point
增加了 interpolate
和 normalize
等高级方法。
Rectangle
也增加了 union
、 intersection
等更丰富的操作。
DragonBones事件派发机制
之前的DragonBones采用自身独立的一套事件机制,从这个版本起,已经跟Egret内核统一,使用Egret内核提供的事件机制。
比如侦听Armature的事件,在升级到2.0 RC2之后需要添加第三个作用域参数(通常是 this
)。
var factory = new dragonBones.EgretFactory(); var armature = factory.buildArmature("warrior"); armature.addEventListener( dragonBones.ArmatureEvent.Z_ORDER_UPDATED , this.zUpdateHandler , this );