Home

Awesome

Egret UI Editor

简介

Egret UI Editor是一款独立的UI编辑器,其主要功能是针对 Egret 项目中的 Exml 皮肤文件进行可视化编辑。

其与您看到的大多数编辑器一样,左侧具有树状的资源管理器,方便您查看和编辑项目和文件夹,中心主要区域为编辑器,其余面板为皮肤编辑过程中会用到的常用面板,如资源面板,图层面板,属性面板等。

img

另外:我们建议您在必要时候配合 VSCode 以及 egret coder 插件一起来进行Exml皮肤文件的编辑,以便可以更严谨的控制皮肤内的代码组织结构。 目前仍为alpha版本,后续会做部分调整。

构建

$ npm run setup-win or npm run setup-mac
$ npm run build
$ npm run start

项目

Egret UI Editor 是针对 EUI 项目进行编辑的。所以请确保您打开的文件夹为一个标准的 Egret EUI 项目。

项目的打开

界面简介

基本布局

img Egret UI Editor的布局直观简单,起包含一下几个主要部分:

快速打开文件

您可以通过如下快捷键来唤起快速打开文件的面板

img

在此面板中,可通过在输入框内输入指定的字符来过滤您想快速打开的文件。同时您可以通过键盘的方向键直接切换所选的要打开的文件。

快捷键设置

您可以通过菜单 Egret UI Editor -> 首选项 -> 快捷键设置 来唤起快捷键修改面板:

img

面板如下:

img

您可以直接通过输入的方式修改快捷键的设置,具体输入内容您可以参考默认快捷键来完成。

项目设置

您可以通过菜单 Egret UI Editor -> 首选项 -> EUI项目设置 来唤起快捷键修改面板:

img

面板如下:

img

在此面板中您可以设置项目的主题文件以及资源文件。

可视化编辑器

简介

Egret UI Editor可视化编辑器,是针对 EUI 项目中的 Exml 皮肤进行可视化编辑的编辑器。

该编辑器可以通过可视化的方式更加方便快捷的对 EUI 中的 Exml 皮肤进行编辑,编辑方式包括但不限于托拉拽等。

前置条件

为了可以正常的使用 Egret UI Editor ,您的项目需要满足如下几个条件:

可视化编辑

如果您满足了上述前置条件,即可在 Egret UI Editor 中对 Exml 皮肤进行可视化编辑了。

img

上图所示的为编辑器内的主要部分,其中:

预览视图

预览视图可以预览当前皮肤的效果,其会把当前皮肤中的所有控件在一个真实的 Egret 环境中跑起来。所以如果您的皮肤中有按钮等具有交互性质的控件时,其在预览视图中是可以进行鼠标交互的。

注意:如果您当前皮肤中的控件均不具备交互,其在预览模式下也是无法交互的。如,button的皮肤是通过图片与文本组成的,这两个组成部分均不具备交互属性,所以在预览视图下按钮的皮肤是无法进行交互的。 但,panel的皮肤中其中一个组成部分是按钮,按钮是具备交互属性的,所以在预览视图下,panel的按钮是可以进行点击的。

img

上图所示的为预览视图下编辑器内的主要部分,其中:

设备的适配

皮肤对于指定设备的适配结果是完全遵循当前项目中 index.html 内的设置的。如下图所示:

img

例如:过您想检验一个面板皮肤的适配效果,您需要先将面板控件在一个新的皮肤中创建出来,并将该控件的皮肤指定为目标面板皮肤。(注意:无法在当前皮肤就是面板皮肤的情况下,对该皮肤进行设备的适配调整

如下图皮肤文件所示,为某场景的皮肤代码:

img

其皮肤展现在设计视图中如下图:

img

其皮肤的组成结构如下:

当将视图切换到 预览 时其会根据项目中 index.html 内的适配策略进行适配,如下图所示 :

img

Egret UI Editor 目录结构

Egret UI Editor 服务机制

服务机制是整个编辑器架构中,最重要的一部分。其移植自 vscode ,主要功能为提供一系列服务的单例。 在通过 IInstantiationService 实例化对象的时候,自动将该对象需要的服务单例注入到该对象中。

IInstantiationService 描述

IInstantiationService 采用树状来管理器内部持有的所有其他服务。

我们可以通过 IInstantiationServicecreateChild 方法来创建一个子实例化服务, 并设置好该实例化服务所持有的其他服务。 至此,我们通过这个子实例化服务去实例化的对象,就可以自动注入该子实例化服务特有的服务了。

实例化服务所设置的服务,其父级实例化服务不持有。 子实例化服务在创建的时候会继承其父级实例化服务所持有的所有服务。

该实例化方式有效的将项目的服务以来根据业务逻辑拆分为了一个树状结构。

我们在描述一个类的时候,只需要在其构造函数中通过 ts 装饰器的方式描述清楚该类所以来的服务类型即可。

其他服务

Egret UI Editor 中包含多个服务,其中部分是框架相关的,另一部分是和 Eui 编辑具体业务逻辑有关的。

框架相关服务

Eui 相关服务