2.2.1选择“延迟加载资源”时web平台etc1图片不能显示

在某个scene上选择“延迟加载资源”时,如果这个界面的某个图片设置了web平台etc1压缩,构建之后访问会抛出一个异常:
Uncaught TypeError:element.addEventListener is not a funcion

研究了一下源代码,发现延迟加载资源,读图片会调用postLoadTexture,这个函数调用cc.loader.load时设置了skips: [ “Loader” ],这样load pipline就会跳过Loader,loadPKMTex函数也就不会被调用。
而Texture2D中_nativeAsset的set方法会判断传入的data._compressed,由于没有调用loadPKMTex,导致该值是undefine,这样会调用initWithElement而非initWithData方法,抛出异常,图片无法显示。

@kenshin
我在postLoadTexture函数里判断了一下是不是pkm文件,是的话不skip Loader,改完图片都能正常显示了,不知道会不会造成其他问题

你看能不能给个demo,我这边测试没有出现你的那个报错。

TextureTest.zip (201.2 KB)
您好,我上传了demo。
构建web mobile平台后,用安卓手机看不到etc1图片。
去掉界面的“延迟加载资源”选项后,图片可见

添加了截图。

选择了“延迟加载资源”,图片不能显示:


未选择“延迟加载资源”,图片可以显示:


嗯,复现问题了,我们尽快处理。

感谢反馈

好的,辛苦啦~

感谢反馈,2.3 将会修复 https://github.com/cocos-creator/engine/pull/5965