使用uint8array显示图片

使用cocos create 2.1.3版本。
打算动态获取图片二进制数据,然后动态创建texture2d和spriteframe显示图片。
调式看到dataview里的数据是有的,uint8array。运行时报:type UNSIGNED_BYTE but ArrayBufferView not Uint8Array or Uint8ClampedArray。代码如下:
怎么回事呢?断点调试在texture-2d.js的_setImage函数(glFmt,options的image为Null);

var oReq = new XMLHttpRequest();
oReq.open(“GET”,“http://localhost:7456/res/import/ed/ed81d4bc-6d27-4a1d-860e-ed4a66449852.png”,true);
oReq.responseType = “blob”;
oReq.onload = (oEvent)=>{
if(oReq.readyState === 4 && oReq.status === 200)
{
cc.log("111 == " + oEvent);
var blobdata = oReq.response as Blob;
var reader = new FileReader();
reader.addEventListener(“loadend”,()=>{
var result = reader.result as ArrayBuffer;
var texture = new cc.RenderTexture();
texture.initWithSize(823,492);
var dataView = new DataView(result,0,result.byteLength);
texture.initWithData(dataView,cc.Texture2D.PixelFormat.RGBA8888,823,492);

                var spriteFrame = new cc.SpriteFrame(texture);
                this.mapSprite.spriteFrame= null;
                spriteFrame.setRect(cc.rect(0,0,823,942));
                this.mapSprite.spriteFrame = spriteFrame;
            });
            reader.readAsArrayBuffer(blobdata);
        }
    };
    oReq.send(null);

直接cc.load啊
updateAvatar() {
let self = this
cc.loader.load({ url: App.getHeadImageByUserId(App.myUser.id), type: “png” }, function (err, texture) {
if (err) {
return
}
if (self) {
let sp = new cc.SpriteFrame(texture)

            self.headImage.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture)
        }
    });
},