this.dragonAtlasAsset.init is not a function

  • Creator 版本:2.0.7或者2.0.8

  • 目标平台:微信小游戏

  • 详细报错信息,包含调用堆栈:this.dragonAtlasAsset.init is not a function

  • 重现方式:构建后打开微信开发者工具

  • 之前哪个版本是正常的 :勾选调试模式构建后正常,不勾选不正常

  • 手机型号 :任何手机

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:

在本地谷歌浏览器正常,构建情况:选择了微信小游戏, 不勾选调试模式出错,勾选调试模式不出错,其他平台未尝试

你好,请排查下你的项目模块是否勾选上了dragonBones模块。
如果都正常的话我们需要你提供你的测试demo给我们复现问题。

已勾选了dragonBones模块。

建议排除下是否项目自身问题。
新建demo测试下吧。
如果已经测试过了的话,请提供demo给我。

因为在换皮的时候,先初始化了null,在浏览器没问题,在微信开发者工具出问题。
如果不初始化null,就会出现
CCSlot.js:281 Uncaught TypeError: Cannot set property ‘x’ of undefined
at dragonBones_CCSlot._updateMesh (CCSlot.js:281)
at dragonBones_CCSlot.287.Slot.update (dragonBones.js:6370)
at Armature.287.Armature.advanceTime (dragonBones.js:3816)
at dragonBones_CCFactory.287.BaseFactory.buildArmature (dragonBones.js:14099)
at dragonBones_CCFactory.buildArmatureDisplay (CCFactory.js:37)
at dragonBones_ArmatureDisplay._buildArmature (ArmatureDisplay.js:440)
at dragonBones_ArmatureDisplay.notify (ArmatureDisplay.js:155)
at dragonBones_ArmatureDisplay.val.set [as dragonAtlasAsset] (preprocess-class.js:64)
at slime.ts:379
at CCLoader.js:674

因为在换皮的时候,先初始化了null,在浏览器没问题,在微信开发者工具出问题。

如果不初始化null,就会出现
CCSlot.js:281 Uncaught TypeError: Cannot set property ‘x’ of undefined
at dragonBones_CCSlot._updateMesh (CCSlot.js:281)
at dragonBones_CCSlot.287.Slot.update (dragonBones.js:6370)
at Armature.287.Armature.advanceTime (dragonBones.js:3816)
at dragonBones_CCFactory.287.BaseFactory.buildArmature (dragonBones.js:14099)
at dragonBones_CCFactory.buildArmatureDisplay (CCFactory.js:37)
at dragonBones_ArmatureDisplay._buildArmature (ArmatureDisplay.js:440)
at dragonBones_ArmatureDisplay.notify (ArmatureDisplay.js:155)
at dragonBones_ArmatureDisplay.val.set as dragonAtlasAsset
at slime.ts:379
at CCLoader.js:674

NewProject_2.rar (480.4 KB)
里面分别做了初始化和不初始化的,初始化在浏览器不报错,在微信开发者工具报错,
不初始化直接报错: Uncaught TypeError: Cannot set property ‘x’ of undefined
at dragonBones_CCSlot._updateMesh (CCSlot.js:281)
at dragonBones_CCSlot.287.Slot.update (dragonBones.js:6370)
at Armature.287.Armature.advanceTime (dragonBones.js:3816)
at dragonBones_CCFactory.287.BaseFactory.buildArmature (dragonBones.js:14099)
at dragonBones_CCFactory.buildArmatureDisplay (CCFactory.js:37)
at dragonBones_ArmatureDisplay._buildArmature (ArmatureDisplay.js:440)
at dragonBones_ArmatureDisplay.notify (ArmatureDisplay.js:155)
at dragonBones_ArmatureDisplay.val.set as dragonAtlasAsset

目前临时方案是:构建时先勾选调试模式构建,然后测试。
详细原因还在排查中。

因为要上传到微信那边,勾选调试模式是不适宜上传的~因为文件大小太大了

你好,这个属于cc.loader.loadResDir 的异常,它的加载是异步加载无法保证所加载的item顺序。
切换使用loadRes可以解决问题。

参考以上修改。

可以了~但还是要先初始化~
self.test,dragonAsset = null;
self.test.dragonAtlasAsset = null;

否则还是会报Uncaught TypeError: Cannot set property ‘x’ of undefined

感谢感谢感谢

我司的一个游戏,也发现了类似的问题,在发布正式版的时候:
1.Android平台,如果不勾选调试模式,粒子效果明显卡顿,勾选以后就没问题
2.WebMobile平台,在ios上运行的时候,程序运行异常,日志输出无错误(错误位置还未定位出来,模糊定位可能是方法没有回调),如果勾选调试模式,则没问题…

能否提供有效测试demo?

非常抱歉,现在才看到你们的回复.
这个是测试demoTestPartical.zip (889.6 KB)

运行环境:2.1.0
测试设备:一加6(高通845+8G)

在Android打包的时候,勾选调试模式和不勾选,差距非常大

麻烦你们排查下,测试demo在楼上

非常谢谢你的反馈,我们最近也在查粒子系统的问题,这个反馈很有价值。

恩恩,麻烦你们了.
感觉cc2.1.0的版本中,调试模式的隐性问题还是挺多的(感觉)

2.0.9 MAC模拟器 loadres 还是会报这个错,我去 我发现用loadresdir可以