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. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  2. 微信小程序踩坑

    微信小程序自定义属性data-xx使用注意事项 data-xx采用驼峰式命名时,数据传递打印显示(以jxsName与jxsname打印显示对比) data-xx全小写命名时,数据传递打印显示

  3. 微信小程序踩坑记

    1:微信小程序之去掉横向滑动滚动条 /** 去除横向滚动条 */ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } 2: ...

  4. 微信小程序踩坑- tabBar.list[3].selectedIconPath 大小超过 40kb

    重新启动微信小程序编辑器的时候遇到了这样的一个问题: tabBar.list[3].selectedIconPath 大小超过 40kb 微信小程序开发的过程之中总会出现这样或者那样的错误,需要我们耐 ...

  5. 微信小程序踩坑日记1——调用微信授权窗口

    0. 引言 微信小程序为了优化用户体验,取消了在进入小程序时立马出现授权窗口.需要用户主动点击按钮,触发授权窗口. 那么,在我实践过程中,出现了以下问题. . 无法弹出授权窗口 . 希望在用户已经授权 ...

  6. 微信小程序踩坑之前端问题处理篇

    近期完成了一个小程序,自己做的前后端开发.真是惨哭我了o(╥﹏╥)o,下面几点希望大家可以避雷. 首先,想先介绍一下我遇到问题的解决思路: 1.先在postman调试接口,看数据获取是否正常, 2.在 ...

  7. 微信小程序踩坑之一[thist]使用技巧

    刚上手小程序 时,习惯把this当成jquery中的$(this)来用,实际上这两个还是有差别的 在页面方法中调用其他方法,一般是用this.function(),直接调用小程序 的方法或函数则是用w ...

  8. 微信小程序踩坑之一【weui-wxss-master单选按钮图标修改思路】

    小程序原生所带的weui框架做小程序UI实在太方便了,但是他的一些细微变化也是让开发中碰到不少头疼的问题 一直以来单选多选的美化都是设计师重点表达的地方之一 而weui-wxss-master中的单选 ...

  9. 微信小程序踩坑之获取手机号

    最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况.研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家. 需求描述 在 ...

随机推荐

  1. 笔记,ajax,事件绑定,序列化

    1. Python序列化 字符串 = json.dumps(对象) 对象->字符串 对象 = json.loads(字符串) 字符串->对象 JavaScript: 字符串 = JSON. ...

  2. MyOD(课下作业,选做)

    MyOD(课下作业,选做) 代码要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

  3. Unity iOS Appstore 上架的问题

    之前一直是一个人的名义上架的应用.现在变成:公司的账号就会出现一些莫名的问题: 首先是账号需要新的boulder名字,新建之后下载验证key. 注意:真机测试不发布,选择自动签名就行了:需要发布就取消 ...

  4. Java数据类型与运算符

    Java 基本数据类型 Java 的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. b ...

  5. python numpy和pandas做数据分析时去掉科学记数法显示

    1.Numpy import numpy as np np.set_printoptions(suppress=True, threshold=np.nan) suppress=True 取消科学记数 ...

  6. 解决问题SyntaxError: Unexpected token import

    ES6语法的模块导入导出(import/export)功能,我们在使用它的时候,可能会报错: SyntaxError: Unexpected token import 语法错误:此处不应该出现impo ...

  7. .net 获取配置文件AppSettings的键值

    //AppSettings.config 节点代码 <appSettings> <add key="IsUpdate" value="false&quo ...

  8. Codeforces 1070J Streets and Avenues in Berhattan dp

    Streets and Avenues in Berhattan 我们首先能发现在最优情况下最多只有一种颜色会分别在行和列, 因为你把式子写出来是个二次函数, 在两端取极值. 然后我们就枚举哪个颜色会 ...

  9. SeaJS之use方法

    SeaJS 是一个js模块加载器.在 SeaJS 看来,一个文件就是一个模块.所有模块都遵循 CMD 规范 define(function(require, exports, module) { va ...

  10. Alpha冲刺(5/10)——2019.4.27

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...