XMLHttpRequest 下载到的图片文件data 能转换成 Texture2d吗

   let xhr = new XMLHttpRequest();
    xhr.responseType = "arraybuffer";
    xhr.open("GET", url, true);

    xhr.onreadystatechange = () => {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                xhr.responseType = 'arraybuffer';
                if (typeof xhr.response !== 'undefined') {
                    let data = new Uint8Array(xhr.response);
                    let texture2d = new cc.Texture2D().initWithData(data as any, cc.Texture2D.PixelFormat.RGBA8888, sprite.node.width, sprite.node.height);
                    sprite.spriteFrame = new cc.SpriteFrame(texture2d as any);
                } else {
                    console.log('Remote download file failed.');
                }
            } else {

            }
        }


    }
    xhr.send();

、、、、、
let data = new Uint8Array(xhr.response);
let texture2d = new cc.Texture2D().initWithData(data as any, cc.Texture2D.PixelFormat.RGBA8888, sprite.node.width, sprite.node.height);
sprite.spriteFrame = new cc.SpriteFrame(texture2d as any);

这三行代码有问题吗,加载出来的是黑屏

cc好像有提供加载网络资源的方法。

我想先缓存到本地再显示到sprite

不是这么接送的把

你这个资源格式, 是二进制流吗还是啥

src 为图片资源路径 ,qrCode 为节点
// 加载二维码
setHeadPic(src){
var self = this;
var imgElement = new Image();
imgElement.src = src;
setTimeout(function () {
var sprite = new cc.Texture2D();
sprite.initWithElement(imgElement);
sprite.handleLoadedTexture();
var spriteFrame = new cc.SpriteFrame(sprite);
var node = new cc.Node();
var sprite = node.addComponent(cc.Sprite);
sprite.spriteFrame = spriteFrame;
self.qrCode.addChild(node);
}, 10);
},

1赞