[LayaAirIDE3]Laya.loader.fetch无法从内存加载二进制图片了

预览启动,Laya.loader.fetch加载保存在arraybuffer中的png图片会失败,没有任何出错信息,升级到3.2发现的,直接再装个3.1.6运行也不行,得彻底删除3.2,包括AppData\Roaming中的,再装3.1.6运行才会正常
没时间准备一个完整的测试例子了,给个函数:
export async function PNG2Tex(PngData: ArrayBuffer): Promise<Laya.Texture2D> {
let ImgBlob = new Blob([PngData], { type: "image" });
let option: any = {};
option.blob = ImgBlob;
let res = await Laya.loader.fetch("", "image", null, option);
if (res) {
let tex = new Laya.Texture2D(res.width, res.height, Laya.TextureFormat.R8G8B8A8, false, false, true);
tex.setImageData(res, true, false);
return tex;
}
return null;
}
已邀请:

谷主

赞同来自:

Laya.loader.fetch那里,第一个参数url不能是空字符串,随便给一个,例如敲一个空格。具体使用示例参照引擎的API示例中的"使用二进制图片”

谷主

赞同来自:

options.blob是ArrayBuffer类型,不是Blob类型。options的类型应该声明为ILoadOptions,而不是用any,这样才能更好的发现代码的错误。

Sagasarate

赞同来自:

我按照你的改了下
export async function PNG2Tex(PngData: ArrayBuffer): Promise<Laya.Texture2D> {
let option: Laya.ILoadOptions = {};
option.type = Laya.Loader.IMAGE;
option.blob = PngData;
let res = await Laya.loader.fetch("", "image", null, option);
if (res) {
let tex = new Laya.Texture2D(res.width, res.height, Laya.TextureFormat.R8G8B8A8, false, false, true);
tex.setImageData(res, true, false);
return tex;
}
return null;
}
测试还是不行,并发现3.1.6就不行了,3.1.0可以,看来我还是花点时间弄个测试项目吧

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作