Egret(引擎篇)
Egret
- Egret(引擎篇)
- 一、什么是Egret?
- 二、Egret
- 1.常用文件配置
- 2.显示对象
- 3.坐标系
- 4.显示列表与容器类
- 5.时间与用户交互
- 5.布局
一、什么是Egret?
Egret Engine是一个基于TypeScript语言开发的HTML5游戏引擎,Egret 引擎专注于移动设备上的HTML5 游戏开发,为HTML5 游戏开发者提供了无可比拟的快捷开发游戏的方式。
引擎特点:
- 简洁易用,上手难度低;
- 配套工具完善;
- 性能高效,Egret完全使用HTML5标准中的canvas技术。极大程度上保证了使用Egret引擎开发的游戏在各个浏览器上的兼容性;
- 完全开源免费
二、Egret
1.常用文件配置
- wing:包括 Egret 项目的任务配置文件和启动配置文件;
- wingProperties.json:Egret Wing 项目配置文件;
- bin-debug:项目调试时,所产生的文件存放于此目录;
- libs:库文件,包括 Egret 核心库和其他扩展库存放于此目录;
- resource:项目资源文件存放于此目录;
- scripts:项目构建和发布时需要用到的脚本文件存放在此目录;
- src:项目代码文件存放于此目录;
- template:项目模板文件存放于此目录;
- egretProperties.json:项目的配置文件;
- index.html:入口文件;
- manifest.json:网页清单文件;
- tsconfig.json:typescript 编译配置文件;
引入第三方库方法:
打开egretProperties.json ,修改如下:
{
"name": "game",
//"path": "../path" 库文件路径
}
打开终端(ctr+shift+y)输入: egret build -e 即可导入
2.显示对象
- egret渲染架构中,能够参与渲染的对象都抽象为显示对象;
- egret引擎中说有的显示对象类型表格:
类 | 说明 |
displayObject | 显示对象基类,所有的显示对象继承自该类 |
Sprite | 精灵图片 |
Bitmap | 显示位图 |
Shape | 用于绘制2D矢量图形 |
MoveClip | 逐帧动画 |
Stage | 舞台类,是游戏中的主场景 |
ScrollView | 滚动拖放类,可以让你的一个显示 对象在一定范围内 |
TextField | 文本类 |
BitmapText | 位图文本 |
3.坐标系
egret引擎的坐标原点位于舞台的左上角。
4.显示列表与容器类
1. 所有的容器全部继承于DisplayObjectContainer类
2. DisplayObjectContainer类中封装了显示列表仓用的功能
- 添加/删除子对象
- 访问子对象
- 检测子对象
- 设置叠放次序
3.添加显示对象到显示列表
this.addChild(shape);
4. 删除显示对象
this.removeChild(shape);
5.时间与用户交互
1. 事件消息机制
- egret引擎中提供了与js一样的事件处理系统,并且在此基础上还提供了一个事件处理对象,通过一整套的事件处理机制,可以方便的响应用户交互输入与系统事件。
2. 事件类
- 事件类是承载事件信息以及一些事件处理方法的对象。
- 每个事件都有关联的事件类型。
- 事件类型以字符串的形式存储在Egret.Event.type属性中常见的事件对象:
- 触摸事件 egret.TouchEvent
- 声音事件
- 定时事件
- 文本事件
- 网络加载状态事件
- I/O错误事件egret.IOEvent等等
- 创建监听器
想要使用一个对象监听某个时间,首先使用addEventListener方法来注册事件监听器。
事件接受对象.addEventListener(事件类.事件类型,事件处理函数,事件处理函数的this对象);
事件接受对象.removeEventListener(事件类.事件类型,事件处理函数,事件处理函数的this对象);
5.布局
- 屏幕适配
移动设备上存在各种分辨率,如何能够使用一套代码写出适应各种分辨率的UI界面,显得尤为重要。 - 完美的屏幕适配分为两个步骤:
1.舞台尺寸(Stage.stageWidth,Stage,stageHeight)与设配屏幕的适配关系。
2.内部UI界面与舞台尺寸的适配关系。
- 通常所说的屏幕适配大多是做到了第一点,都是通过scaleMode来决定舞台尺寸;
- EUI,通过引入自适应流式布局(自动布局),能够解决第二步骤的屏幕适配;
注:在egret中需要注意anchoroffset的设置是相对于自身,这一点在做skew旋转时深有体会。