安卓原生动态图集报错

  • Creator 版本: 2.4.3

  • 目标平台:Android

  • 首个报错:
    2021-04-26 10:09:26.300 8444-8488/com.xtcedu.game.measurebear E/jswrapper: 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.8d6cf.js:20979
    [2]insertSpriteFrame@src/cocos2d-jsb.8d6cf.js:43803
    [3]insertSpriteFrame@src/cocos2d-jsb.8d6cf.js:43934
    [4]packToDynamicAtlas@src/cocos2d-jsb.8d6cf.js:43124
    [5]updateRenderData@src/cocos2d-jsb.8d6cf.js:47819
    [6]_updateRenderData@jsb-adapter/jsb-engine.js:348
    [7]RenderFlow.render@jsb-adapter/jsb-engine.js:6533
    [8]render@src/cocos2d-jsb.8d6cf.js:43520
    [9]mainLoop@src/cocos2d-jsb.8d6cf.js:14542
    [10]callback@src/cocos2d-jsb.8d6cf.js:14777
    [11]tick@jsb-adapter/jsb-builtin.js:2156

你好,方便提供个demo?

demo.zip (245.2 KB)
初步排查出原因是:开启了动态图集后,使用单色精灵,就会报错。
default_sprite_splash.png这张纹理会出问题。


你好,这个设置代码放错位置了,文档里有说的,不要放在 onLoad/start 方法里;
你给的demo,报错原因是这个,你具体项目的报错原因不知是否一样,麻烦确认。
https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html?h=clean

demo.zip (248.0 KB)
其实这部分代码是在一个bundle内的,加载后才会执行。
如果只是bundle子包需要开启动态图集,需要如何处理

用项目中的纹理替换default_sprite_splash.png这张纹理,就不会报错。

暂不支持这种特殊处理,另外我也试了用项目种的纹理替换default_sprite_splash.png,但是我这边测试是有报错的。在 bundle 里的纹理和在 bundle 外的纹理,都试过,无法复现你说的没报错的情况 :joy:

我也遇到过,而且是在外面设置的,也是通过设置成自身资源替换解决的。感觉开启动态图集后那个点没有正确的绘制到大图上。

暂时只能这么处理了

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。