Egret社区
产品 Egret Engine 版本 5.3.7
复现概率 100% 平台 Windows 10
复现步骤 1. 采用webpack打包编译,模式为modern
2. 采用es6模块导入导出
3. 配置好纹理集资源配置
4. 新建Index EUI 组件,绑定皮肤文件
5. 在main中createGameSecene中添加Index组件
问题描述 1. eui项目采用webpack打包编译后,eui组件在加载皮肤文件时对于纹理集图片资源,无法获得资源,一直报404错误。
2. this.skinName无论是使用皮肤类名还是完整路径,均会出现同样问题。
3. 原因在于皮肤文件的纹理集资源的source路径是'.',获取纹理集资源需要使用'#',导致AssetAdapter.ts中在解析资源时,走了RES.getResByUrl()分支,最终导致资源无法获得。
4. 需要在AssetAdapter.ts中更改source格式,才能正确加载资源。
错误代码 export class AssetAdapter implements eui.IAssetAdapter {
/**
* @language zh_CN
* 解析素材
* @param source 待解析的新素材标识符
* @param compFunc 解析完成回调函数,示例:callBack(content:any,source:string):void;
* @param thisObject callBack的 this 引用
*/
public getAsset(source: string, compFunc: Function, thisObject: any): void {

// source = source.replace('.', '#')

function onGetRes(data: any): void {
compFunc.call(thisObject, data, source);
}
if (RES.hasRes(source)) {
let data = RES.getRes(source);
if (data) {
onGetRes(data);
}
else {
RES.getResAsync(source, onGetRes, this);
}
}
else {
RES.getResByUrl(source, onGetRes, this, RES.ResourceItem.TYPE_IMAGE);
}
}
}
BUG截图
demo无法上传,附件上传总是显示 内部服务器错误。
(话说,从注册到发帖,感觉这个论坛是真的难用)
分享到 :
0 人收藏

1 个回复

倒序浏览
app小王子  社区管理员 | 2020-7-3 17:19:34
收到
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有梦想的咸鱼

初学乍练

积分: 5 帖子: 5 精华: 0

楼主热帖

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部