最近更新时间: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
几个属性
完全矩形碰撞检测
根据具体的graphics图形进行检测
旧版本实现不正确
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.currentTarget
的 localX / localY
返回基于 TouchEvent.target
的 localX / localY
旧版本和 Flash 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 的支持
- 添加滤镜功能
- 如果调用过引擎内部的方法或者属性,请自行查找最新对应的方法或者属性。
- 所有以
_
前缀的内部方法被调整为$
前缀。