Skip to content

白鹭引擎

废弃

安装配置

  1. 用的 2d 的 EgretLauncher 引擎。
  2. 安装 EgretLauncher 和 EgretWing 这两个工具。 wing 是开发时的工具,貌似是基于 vscode 的。
  3. 按照网络的教程,选择配置,很容易就生成项目了。
  4. 白鹭是用 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 是入口文件。

typescript
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.jsonmodules 中添加你的第三方库

{
  "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 对象是用来获取静态资源的方法,有异步和同步。可以先通过 loadConfigloadGroup 先加载了资源。等到需要用的时候,再用 getResgetResAsync 获取对应的资源

EUI 模块

通过编写 exml 格式的文件,编写 UI 组件。