dragonbones-runtime
Version:
the tools to build dragonbones file for diffrent framework
261 lines (143 loc) • 7.58 kB
Markdown
Egret EXP Release Note
===============================
最近更新时间:2015年7月30日
欢迎您使用Egret
## 概述
Egret EXP 社区体验版是Egret引擎的一个社区体验版本。
EXP 表示 experience (体验) 和 extreme performance (极限性能)
在这个版本中,我们主要聚焦于实现一套全新的渲染引擎,使游戏的渲染性能得到提升。
EXP 版本,重点解决了几个开发者反馈较普遍的痛点需求,如:
* 不规则遮罩
* Graphics 精确碰撞检测
* 精简入口逻辑
除此之外,EXP版本还解决了数个和 Flash 风格 API 调用行为不一致的问题
## 更新内容
本次更新内容汇总了从引擎 2.0 到 新版本的的改动
### 新增功能
* 自动脏矩形渲染,只有屏幕上的变化内容才会被重新渲染。
* DisplayObject 中 mask 同时支持 Rectangle 和 DisplayObject 类型参数
* 屏幕适配已支持旋转,并且可以指定横竖屏。
在 ```index.html```中修改
```data-orientation="auto"``` 设置横竖屏,具体见 OrientationMode,
```data-content-width="480"``` 设置宽
```data-content-height="800"``` 设置高
* 由于 TypeScript 中不支持调用父类属性的方式,因此新增加api用来调用父类的属性的方式。
egret.superSetter(this, "alpha", 1); 代替其他语言中的 super.alpha = 1;
egret.superGetter(this, "alpha"); 代替其他语言中的 super.alpha
* 新增Bitmap smoothing属性,设置后图片会有平滑处理
* 新增Bitmap pixelHitTest属性,设置后图片支持像素点碰撞。
### 废弃接口
由于EXP版本的渲染引擎重构,以下 API 无法在新版本中支持。
* 废弃 DisplayObject 中 ```explicitWidth``` ```explicitHeight``` ```measuredHeight``` ```measuredWidth``` ```needDraw ```几个属性调用。
* 废弃 DisplayObject 中的相对锚点 ```anchorX``` ```anchorY```,如果想使用,请通过绝对锚点 ```anchorOffsetX``` ```anchorOffsetY``` 来实现。
* 废弃 DisplayObject 中 ```hitTest```方法,不再提供重写点击区域的判断,如果想调用点是否在DisplayObject内,请调用 hitTestPoint
* 不能对Stage进行以下设置 ```alpha```、```visible```、```x```、```y```、```scaleX```、```scaleY```、```rotation```、```cacheAsBitmap```、```scrollRect```、```filters```、```blendMode```、```touchEnabled```、```matrix```
除此之外我们废弃了一些不需要的和可以用其他方式实现的 API,保持 API 的精简。
* 废弃 Ticker 中 ```run``` ```setTimeScale``` ```getTimeScale``` ```pause``` ```resume``` 方法。
* 废弃 Event 中 ```ctrlKey``` ```altKey``` ```shiftKey``` 几个属性
### API 变化
#### Graphics 碰撞检测区域变化
##### 旧版本实现方式
完全矩形碰撞检测
##### 新版本实现方式
根据具体的graphics图形进行检测
##### 调整原因
旧版本实现不正确
##### TouchEvent.dispatchTouchEvent 参数调整
###### 旧版本参数
```
target:IEventDispatcher,
type:string,
touchPointID:number = 0,
stageX:number = 0,
stageY:number = 0,
ctrlKey:boolean=false,
altKey:boolean=false,
shiftKey:boolean=false,
touchDown:boolean=false
```
##### 新版本参数
```
target:IEventDispatcher,
type:string,
bubbles?:boolean,
cancelable?:boolean,
stageX?:number,
stageY?:number,
touchPointID?:number,
touchDown:boolean = false
```
##### 调整原因
去掉 ```ctrlKey``` , ```altKey``` , ```shiftKey``` 这三个和移动设备无关的属性
#### TouchEvent.localX / TouchEvent.localY 返回结果变化
##### 旧版本行为
返回基于 ```TouchEvent.currentTarget``` 的 localX / localY
##### 新版本行为
返回基于 ```TouchEvent.target``` 的 localX / localY
##### 调整原因
旧版本和 Flash API 实现不一致。
#### 显示 FPS API 修改
##### 旧调用方式
调用 ```Profiler.getInstance().run()``` 来控制 FPS
##### 新调用方式
在 ```index.html``` 中设置 ```data-show-fps="true"``` 显示FPS
设置 ```data-show-fps-style="x:0,y:600,size:50,textColor:0xff0000"``` 修改FPS样式
##### 调整原因
通过把显示FPS参数移动到 ```index.html``` 文件中,开发者可以更方便的动态根据版本 / 用户 / 白名单的手段为自己游戏添加帧频,而无需重新修改编译代码
#### 屏幕适配策略调整
##### 旧版本实现
NO_SCALE 策略下,```stage.stageWidth ``` 和 ```stage.stageHeight ``` 永远不变
NO_BORDER 策略下,竖屏游戏 ```stage.stageWidth ``` 不会变化,```stage.stageHeight ``` 会变化,横屏游戏相反
##### 新版本实现
NO_SCALE 策略下,```stage.stageWidth ``` 和 ```stage.stageHeight ``` 会根据浏览器窗口显示范围而变化
NO_BORDER 策略下,竖屏游戏 ```stage.stageWidth ``` 和```stage.stageHeight ``` 不会变化,多出的部分会在显示范围外而被裁切
添加 FIXED_WIDTH 策略 和 FIXED_HEIGHT 策略,开发者如果之前使用了 NO_BORDER 策略,竖屏游戏请替换为 FIXED_WIDTH 策略,横屏游戏请替换为 FIXED_HEIGHT 策略
##### 调整原因
NO_SCALE 和 NO_BORDER 和 Flash API 不一致
##### 纹理缩放实现修改
##### 旧版本实现
修改 ```egret.MainContext.instance.rendererContext.texture_scale_factor``` 后,纹理和配置文件都需要进行修改
##### 新版本实现
修改 ```egret.MainContext.instance.rendererContext.texture_scale_factor``` 后,只需修改纹理,无需修改配置文件
允许通过在 ```index.html``` 中设置 ```texture-scale-factor="2"``` 修改
##### 调整原因
采用此种方法后,开发者只需要修改图片以及一个入口配置就可以实现纹理缩放功能。
#### 入口文件变化
##### 旧版本实现
在 ``` egret_loader.js ``` 中设置各种属性
根据一个 ```egret_file_list.js``` 和 ```game_file_list.js```设置加载内容
主 ```div``` 为 ```<div style="position:relative;" id="gameDiv"></div>```
##### 新版本实现
在 ``` index.html ``` 中设置各种属性
在构建后,在 ```index.html``` 生成需要加载的 js 文件的 script 标签
主 ```div``` 为
```
<div id="egret-sample" style="margin: auto;width: 100%;height: 100%;" class="egret-player"
data-entry-class="Main"
data-scale-mode="showAll"
data-orientation="auto"
texture-scale-factor="1"
data-orientation="portrait"
data-content-width="480"
data-content-height="800"
data-show-paint-rect="false"
data-show-fps="true"
data-show-fps-style="x:0,y:0,size:24,textColor:0xffffff"
data-show-log="false" data-log-filter="">
</div>
```
##### 调整原因
精简入口逻辑。
由于改动较大,建议开发者在迁移老项目时,先创建一个新项目,然后把所有代码拷贝至新项目中。
#### 其他变化
* 容器的空白区域将不能点击。
* 多指触摸设置调用变化。由
设置 TouchContext.maxTouches 变成
设置 stage.maxTouches 默认值从2调整为99
#### 路线图
* 添加对 Egret Runtime 的支持
* 添加对 WebGL 的支持
* 添加滤镜功能
#### 注意
* 如果调用过引擎内部的方法或者属性,请自行查找最新对应的方法或者属性。
* 所有以 ```_``` 前缀的内部方法被调整为 ```$``` 前缀。