RenderTexture 为何不能用initWithData初始化?

代码如下:
start(){
var data=new Uint8Array(256);
data.fill(100);
var rt = new cc.Texture2D();
rt.initWithData(data,cc.Texture2D.PixelFormat.RGBA8888,16,16);
}

预览报错:
CCTexture2D.js:377 Uncaught TypeError: Cannot read property ‘update’ of null
at cc_Texture2D.update (CCTexture2D.js:377)
at cc_Texture2D.update (CCTexture2D.js:377)
at cc_Texture2D.initWithData (CCTexture2D.js:428)

断点源代码:

initWithData (data, pixelFormat, pixelsWidth, pixelsHeight) {
var opts = _getSharedOptions();
opts.image = data;
opts.format = pixelFormat;
opts.width = pixelsWidth;
opts.height = pixelsHeight;
this.update(opts);
this.width = pixelsWidth;
this.height = pixelsHeight;
this.loaded = true;
this.emit(“load”);
return true;
},

然后我从官网链去源码看到的是:
多了这样一段:

    if (!this._texture) {
        this._texture = new renderer.Texture2D(renderer.device, opts);
    }
    else {
        this._texture.update(opts);
    }

所以,请问大大我该怎么办?

这个地方很坑,首先不能用Texture2D类型,要用RenderTexture,然后要先initWithSize才能initWithData

        var data = new Uint8Array(256);
        data.fill(100);
        var rt = new cc.RenderTexture();
        rt.initWithSize(16, 16);
        rt.initWithData(data, cc.Texture2D.PixelFormat.RGBA8888, 16, 16);

RenderTexture继承Texture2D,想干啥一样的

1赞

我刚刚打帖子的时候手误了,我就是用的RenderTexutre , 一直报错~~

我试试,先 initWithSize看能不能解决。

多谢啦。

666,我之前并没有init在cocos2.4.8里边正常。升级到2.4.13以后就不正常了。参考您的代码,改好了。谢谢。