白鹭引擎
废弃
安装配置
- 用的 2d 的 EgretLauncher 引擎。
- 安装 EgretLauncher 和 EgretWing 这两个工具。 wing 是开发时的工具,貌似是基于 vscode 的。
- 按照网络的教程,选择配置,很容易就生成项目了。
- 白鹭是用 typeScript 进行开发。
开始使用
生成项目后,会有一个简单的游戏界面。
.
├── bin-debug
├── egretProperties.json -- 白鹭引擎属性配置
├── favicon.ico
├── index.html
├── libs
├── manifest.json
├── resource -- 静态资源
├── scripts -- 执行命令
├── src -- 开发文件
├── template -- 模板
├── tsconfig.json -- typeScript 配置
└── wingProperties.json
// src/
.
├── LoadingUI.ts
├── Main.ts
├── Platform.ts
默认有三个 ts 文件。Main.ts 是入口文件。
public constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
}
基本这里是程序开始的地方。
基本命令
- egret build -e (构建项目,把配置的 module 引入)
- egret create_lib plugin_name (生成插件项目)
- egret startserver -a (进行开发,-a 是保存就自动编译)
坑点
白鹭里面开发,是不能使用 import、export ,模块化开发。。。。在某个文件声明了一个类后,等于在全局声明了一个变量,然后任何文件任何地方都可以使用。
如何导入第三方库
一开始看文档,库项目配置那里,看得有点晕,要结合两个文档(而且在不同的位置。。。)才行。
这里说下如何导入第三方库。就拿 axios
为例。
// 创建第三方库文件夹(没错,要先创建一个项目才行)
egret create_lib axios
mkdir bin
mkdir src
// 把你的库文件放到 src 里面。同时生成一个 xxx.d.ts 文件
vi axios.d.ts
axios.d.ts
如何编写大家就上网看看吧。我只是简单得定义下而已。
declare const axios: any;
package.json
{
"name": "axios",
"compilerVersion": "5.1.9",
"typings": "src/axios.d.ts"
}
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"allowJs": true,
"outFile": "bin/axios.js"
},
"files": [
"src/axios.js"
]
}
最后 egret build
就生成第三方库了。
然后回到项目文件夹,在 /egretProperties.json
的 modules
中添加你的第三方库
{
"name": "axios",
"path": "./../plugin/axios"
}
path
是你的第三方库的路径。最后 egret build -e
构建项目后,就可以使用 axios
了。
记录
对象与容器
在Egret中,所有的容器都继承自 DisplayObject
。
对象的 x 和 y 属性始终是指显示相对于其父显示对象坐标轴的 (0,0) 坐标的位置,可以通过 容器的一个方法 globalToLocal
转换到舞台的坐标。
- 添加对象:
this.addChild(obj)
- 删除对象:
this.removeChild(obj)
注意:
同一个显示对象无论被代码加入显示列表多少次,在屏幕上只绘制一次。
如果一个显示对象A被添加到了B这个容器中,然后A又被添加到了C容器中。那么在第二次执行 C.addChild(A) 的时候,A自动的从B容器中删除,然后添加到C容器中。
事件
添加事件:
object.addEventListener(type, listener, thisObject, useCapture, priority)
触摸事件,要开启权限才能启用
显示对象实例.touchEnabled = true
事件类型:
TOUCH_BEGIN:当用户第一次触摸启用触摸的设备时(例如,用手指触摸配有触摸屏的移动电话或平板电脑)触发
TOUCH_CANCEL:由于某个事件取消了触摸时触发
TOUCH_END:当用户移除与启用触摸的设备的接触时(例如,将手指从配有触摸屏的移动电话或平板电脑上抬起)触发
TOUCH_MOVE:当用户触碰设备并移动时进行触发,而且会连续触发,直到接触点被删除
TOUCH_TAP:当用户在触摸设备上与开始触摸的同一 DisplayObject 实例上抬起接触点时触发(相当与点击事件)
例子:
this.obj.addEventListener(egret.TouchEvent.TOUCH_MOVE, onMove, this)
RES 模块
RES 对象是用来获取静态资源的方法,有异步和同步。可以先通过 loadConfig
和 loadGroup
先加载了资源。等到需要用的时候,再用 getRes
和 getResAsync
获取对应的资源
EUI 模块
通过编写 exml
格式的文件,编写 UI 组件。