Egret 生成 自带EUI 的微信小游戏 踩坑!
1. 首先,再次被网上一大堆屎一样的资料搞得浪费了我一天时间。各种坑。
2. 本文先讲一种正确的方式,然后再列举坑。
去www.egret.com下载最新的引擎,我的最新版本是5.2.2. 然后就会被安装了一个全家桶。在里面,你还要在去点击Egret Wing,安装个开发环境。

然后,在项目的地方,新建一个游戏项目,带EUI框架:

必须注意红框的地方,避免踩坑。类型是Egret游戏项目。之后,全家桶就会默认打开Egret Wing进入开发环境。

在src目录下面,新建模板文件——新建EUI组件。

这个时候,第一个坑出现,没有default.thm.json文件。
自己new一个,里面填写{}, 放在resource目录下:

之后再新建EUI组件就没有报错了。

我新建一个叫做Helloworld的组件。

时候就会在resource/eui_skins目录下,出现了exml窗体界面文件,点击,添加一个label,名字是nameL

之后,在src目录下,修改Hellworld.js文件:
class Helloworld extends eui.Component implements eui.UIComponent {
public nameL : eui.Label;
public constructor() {
super();
this.addEventListener(eui.UIEvent.COMPLETE, this.onComplete, this);
}
protected partAdded(partName:string,instance:any):void
{
super.partAdded(partName,instance);
}
protected childrenCreated():void
{
super.childrenCreated();
}
protected onComplete(e):void{
this.nameL.addEventListener(egret.TouchEvent.TOUCH_TAP, this.tap, this);
}
protected tap(e):void{
this.nameL.text = "HELLO WORLD";
}
}
注意这里面的坑一大堆。
1. 首先,不需要指定this.SkinName,否则微信小游戏会一大堆搓。
2. 要在构造函数监听onComplete时间,然后里面去绑定nameL的监听器。忘记什么childCreated之类的,都是坑。
最后,在Main.js的入口函数里面,:createGameScene方法,把EUI添加到舞台:

接下来跑一下,看看效果:

恩。很好,完全没有效果。因为没有加EUI的主题自动映射起,接下来,我又创建了一个EUI项目,和这个游戏项目对比来开发,差别点包括:
1. manifest.json文件,game下面添加
"bin-debug/AssetAdapter.js",
"bin-debug/ThemeAdapter.js"
2. egretProperties.json,添加eui节点:
"eui": {
"exmlRoot": [
"resource/eui_skins"
],
"themes": [
"resource/default.thm.json"
],
"exmlPublishPolicy": "commonjs"
},
3. src目录,添加AssetAdapter,ThemeAdapter
4. Main.ts,在onAddToStage方法,添加
//inject the custom material parser
//注入自定义的素材解析器
let assetAdapter = new AssetAdapter();
egret.registerImplementation("eui.IAssetAdapter", assetAdapter);
egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());
5. Main.ts, 在loadResource添加:
await this.loadTheme();
private loadTheme() {
return new Promise((resolve, reject) => {
// load skin theme configuration file, you can manually modify the file. And replace the default skin.
//加载皮肤主题配置文件,可以手动修改这个文件。替换默认皮肤。
let theme = new eui.Theme("resource/default.thm.json", this.stage);
theme.addEventListener(eui.UIEvent.COMPLETE, () => {
resolve();
}, this);
})
}
然后在跑一下,就出现了。
最后点击发布,微信小游戏。然后打开微信的开发工具,加载导出的项目目录。全部完成!!!!
这里就在游戏项目里面成功的引入了EUI皮肤管理!
其他的一些坑再度强调:
1. EUI的类,不需要声明skinName!!! 否则比错
2. 没有XML的读取,因为使用了commonjs方式把皮肤编译成js了。如果你要xml去夹在,必错!
3. 没有什么window.DOMParser = require("./xmldom/xmldom.js").DOMParser;
那个智障的egret官方微信小游戏FAQ,直接忽略到,简直就是把你往坑再踩一脚。
http://developer.egret.com/cn/github/egret-docs/Engine2D/minigame/minigameFAQ/index.html
Egret 生成 自带EUI 的微信小游戏 踩坑!的更多相关文章
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 微信小程序踩坑
微信小程序自定义属性data-xx使用注意事项 data-xx采用驼峰式命名时,数据传递打印显示(以jxsName与jxsname打印显示对比) data-xx全小写命名时,数据传递打印显示
- 微信小程序踩坑记
1:微信小程序之去掉横向滑动滚动条 /** 去除横向滚动条 */ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } 2: ...
- 微信小程序踩坑- tabBar.list[3].selectedIconPath 大小超过 40kb
重新启动微信小程序编辑器的时候遇到了这样的一个问题: tabBar.list[3].selectedIconPath 大小超过 40kb 微信小程序开发的过程之中总会出现这样或者那样的错误,需要我们耐 ...
- 微信小程序踩坑日记1——调用微信授权窗口
0. 引言 微信小程序为了优化用户体验,取消了在进入小程序时立马出现授权窗口.需要用户主动点击按钮,触发授权窗口. 那么,在我实践过程中,出现了以下问题. . 无法弹出授权窗口 . 希望在用户已经授权 ...
- 微信小程序踩坑之前端问题处理篇
近期完成了一个小程序,自己做的前后端开发.真是惨哭我了o(╥﹏╥)o,下面几点希望大家可以避雷. 首先,想先介绍一下我遇到问题的解决思路: 1.先在postman调试接口,看数据获取是否正常, 2.在 ...
- 微信小程序踩坑之一[thist]使用技巧
刚上手小程序 时,习惯把this当成jquery中的$(this)来用,实际上这两个还是有差别的 在页面方法中调用其他方法,一般是用this.function(),直接调用小程序 的方法或函数则是用w ...
- 微信小程序踩坑之一【weui-wxss-master单选按钮图标修改思路】
小程序原生所带的weui框架做小程序UI实在太方便了,但是他的一些细微变化也是让开发中碰到不少头疼的问题 一直以来单选多选的美化都是设计师重点表达的地方之一 而weui-wxss-master中的单选 ...
- 微信小程序踩坑之获取手机号
最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况.研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家. 需求描述 在 ...
随机推荐
- css3兼容360
在头部添加 <!--启用360浏览器的极速模式(webkit) --> <meta name="renderer" content="webkit&qu ...
- 认识 Linux 文件权限
Linux 之所以是比较安全的操作系统,和它丰富的文件权限设定是有关系的,学习 Linux 操作系统一定要懂文件的权限识别和设置.通过这篇博文我们了解 Linux 操作系统的文件权限. 拥有者 / ...
- Java中三种代理模式
代理模式 代理(Proxy)是一种设计模式,提供了间接对目标对象进行访问的方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的功能上,增加额外的功能补充,即扩展目标对象的功能. 这就 ...
- CentOS openssh升级到openssh可用
1. https://blog.csdn.net/moonpure/article/details/54575401 2. http://www.it165.net/admin/html/201303 ...
- 【webpack系列】从零搭建 webpack4+react 脚手架(四)
经过三个章节的学习,你已经学会搭建了一个基于webpack4的react脚手架.如果要更改配置,比如,你希望把编译后的js文件和css文件等单独放dist下的static目录下,你想想,是不是有点麻烦 ...
- redis安装使用
Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务器,因为值(valu ...
- SLAM学习--开源测试数据集合
Tum RGB-D SLAM Dataset and Benchmark https://vision.in.tum.de/data/datasets/rgbd-dataset Kitti http: ...
- 输入a,b,求a^b的所有因子之和
题目 poj的1845 分解a的质因数a=p1^t1*p2^t1........ 每个质因数对sum的贡献: 当除去质因数p1时的因数和为sum,当计入p1时,因子和变成sum*p1^0+sum*p1 ...
- Oracle:select into 查询没有记录的解决办法
在数据库编程中,select into 语句可以将数据库的某些值赋值给程序的变量,使用起来非常方便.但很多时候也会遇到查询出来没有记录的情况,这时程序会出错. 可以使用 exception when ...
- Flask速成项目:Flask实现计算机资源的实时监控
很多人都说使用Python开发WEB应用非常方便,那么对于WEB新手来说,到底有多方便呢?本文即将展示给你Python的魔法. 本文将通过一个实例:Flask实现计算机资源的实时监控,迅速带你入门Fl ...