Skip to content

Latest commit

 

History

History
260 lines (143 loc) · 7.4 KB

2.4.0_ReleaseNotes.md

File metadata and controls

260 lines (143 loc) · 7.4 KB

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进行以下设置 alphavisiblexyscaleXscaleYrotationcacheAsBitmapscrollRectfiltersblendModetouchEnabledmatrix

除此之外我们废弃了一些不需要的和可以用其他方式实现的 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.jsgame_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 的支持
  • 添加滤镜功能

注意

  • 如果调用过引擎内部的方法或者属性,请自行查找最新对应的方法或者属性。
  • 所有以 _ 前缀的内部方法被调整为 $ 前缀。