cc.RenderTexture drawTextureAt 在 native 环境下使用报错

  • Creator 版本: v2.2.0 v2.4.3

  • 目标平台:Mac / Android

  • 报错: v2.4.3 的报错日志

    ERROR: Uncaught TypeError: Cannot read property ‘length’ of null, location: jsb-adapter/jsb-builtin.js:0:0

    STACK:

    [0]_p.updateSubImage@jsb-adapter/jsb-builtin.js:7270

    [1]drawTextureAt@src/cocos2d-jsb.js:18367

    [2]onButton@assets/main/index.js:41

    [3]emit@src/cocos2d-jsb.js:22633

    [4]emitEvents@src/cocos2d-jsb.js:22620

    [5]_onTouchEnded@src/cocos2d-jsb.js:22261

    [6]251.c.emit@src/cocos2d-jsb.js:36348

    [7]rt@src/cocos2d-jsb.js:13234

    [8]dispatchEvent@src/cocos2d-jsb.js:14021

    [9]Z@src/cocos2d-jsb.js:13138

    [10]_onTouchEventCallback@src/cocos2d-jsb.js:28666

    [11]_dispatchEventToListeners@src/cocos2d-jsb.js:28743

    [12]_dispatchTouchEvent@src/cocos2d-jsb.js:28699

    [13]dispatchEvent@src/cocos2d-jsb.js:28921

    [14]handleTouchesEnd@src/cocos2d-jsb.js:34616

    [15]l@src/cocos2d-jsb.js:34734

    [16]anonymous@src/cocos2d-jsb.js:34749

    [17]dispatchEvent@jsb-adapter/jsb-builtin.js:3069

    [18]anonymous@jsb-adapter/jsb-builtin.js:3141

代码很简单

onButton() {
        let tex = this.someNode.getComponent(cc.Sprite).spriteFrame.getTexture();
        let renderTexture = new cc.RenderTexture(); 
        renderTexture.initWithSize(tex._getOpts().width, tex._getOpts().height); 
        cc.renderer.device.setFrameBuffer(renderTexture._framebuffer);  // 写不写都一样报错
        renderTexture.drawTextureAt(tex, 0, 0); 
}

打印看了下,web 下 tex._image 是有值的,native 下这个是空的。

想问下有什么解决方案吗?

请问解决了吗

CLEANUP_IMAGE_CACHE 这个开关关了

1赞

我也报这样的错开启了没有用

开关关了 你开启了肯定报错 看下2.4.3源码得cctexture2d得766行

嗯,不报错了。十分谢谢

问一下,drawTextureAt这个函数你再原生平台有效吗?我只有web平台有效,像素再原生平台读不到