博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Egret引擎的EUI基础使用教程
阅读量:2198 次
发布时间:2019-05-03

本文共 2130 字,大约阅读时间需要 7 分钟。

由于Egret引擎的EUI扩展库的官方文档写得十分复杂,让很多开发者短时间内难以入手并且走了不少坑,在这里我将教你Egret引擎的扩展库EUI的基本使用方法。废话不多说,一起开始吧!

一、我们要新建一个项目;

二、打开项目后,需要在资源管理器里,在resource文件夹下新建一个名为eui_image的文件夹(当然文件夹名可自定义);

三、我准备了一张笑脸图片,把笑脸放进eui_image文件夹里面;

四、点击wing资源管理里面的default.res.json文件,确保preload预加载组里面有face_png笑脸资源;

五、右键新建一个EUI组件,其实我是按错了,但又要重新截图嫌麻烦只好将错就错,直接新建EXML文件就可以了,我建议你直接新建一个EXML文件直接新建一个EXML文件直接新建一个EXML文件,说三遍;

六、我将EXML文件命名为Wait,这个你喜欢命名为什么就什么。新建好Wait.exml文件后,打开,点击很多格子的画布,然后在右方属性面板上修改一下宽度和高度;

七、接着,我们点击左边的资源按钮,找到笑脸图片,鼠标点住拉到画布那里,笑脸就自动显示在画布上了;

八、我们修改一下笑脸的属性,也是在右边属性面板中找到X锚点和Y锚点,设置数值为宽度和高度的一半,然后Ctrl+s保存一下。有人问,为什么我要把锚点设置为笑脸的中间呢?因为我想接下来用代码来控制笑脸不停在旋转;

九、修改了锚点属性还不够,我的代码还识别不了我的笑脸,因为如果当我添加了十个笑脸进去却只想控制其中一个笑脸旋转时,我怎么知道哪个笑脸是需要控制的,所以我们需要给笑脸一个编号,这个编号是ID,同理,在属性面板上设置笑脸的ID值为face,接着保存一下;

十、好了,Wait.exml文件做好了,检查一下,没什么问题就下一步了,当然你可以把界面做得尤为复杂,我喜欢把EXML文件称为界面;

十一、现在我们的任务是:用代码来控制界面上的笑脸。首先新建一个ts文件,由于我之前第五条时说过,我按错建了EUI组件,所以Wait.ts这个文件自动生成在Wait.exml的同级目录,所以我就不需新建了。但是你要在src文件夹下新建一个ts文件写代码来加载我们的Wait界面,下图的代码由于我在EUI组件基础上写的,所以可能与你的不太一样,不过文章的最后我稍微解释一下代码的意思;

十二、加载界面的Wait类完成后,打开src下的Main.ts文件,把onButtonClick函数删掉,把startCreateScene函数里面的内容删掉,我们重写startCreateScene函数体;

十三、好了,代码写好了,我们按F5来运行一下看下效果,发现笑脸很开心地在旋转。

在文章结束之前,我来解释一下原理:

1、EXML文件本来是纯代码构成的,但是Egret团队将EXML的图形化编辑整合到wing里面,所以我们才能方便地、愉快地直接拖图像等控件到画布里改下属性实时预览效果;

2、单纯EXML文件虽然能做界面,但是是静态的,我们需要通过代码来自由地控制界面的变化,所以我们需要继承eui组件类自定义一个类来加载并操作界面,其中EXML文件的ID值就对应了自定义类里面的public同名变量;

3、自定义的eui继承类也是显示对象,所以需要在Main主逻辑类里面addChild函数将界面显示到游戏舞台上。

最后,我贴一下相关代码:

Wait.ts全部代码:

class Wait extends eui.Component{    public constructor() {        super();        /**加载皮肤 */        this.skinName = "resource/eui_skins/Wait.exml";    }    protected childrenCreated():void    {        super.childrenCreated();              this.faceTween();        /**调用face缓动函数 */    }       public face:eui.Image;         /**对应Wait.exml文件中对应的id值对象(笑脸) */       private faceTween():void        /**face对象的缓动动画 */    {                var tw = egret.Tween.get( this.face, { loop:true});        tw.to({rotation:360},4000,egret.Ease.circIn).to({rotation:0},0).wait(500);    }}

Main.ts中的startCreateScene函数体代码:

var face:Wait = new Wait();       /**实例化皮肤对象 */this.addChild(face);          /**将face显示对象添加到舞台 */

你可能感兴趣的文章
剑指offer 60. 不用加减乘除做加法
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>