droagonBones创建问题

创建语句:
this.node.getComponent(dragonBones.ArmatureDisplay).dragonBonesAsset = dbAsset;
this.node.getComponent(dragonBones.ArmatureDisplay).dragonBonesAltasAsset = dbAltasAsset;
this.node.getComponent(dragonBones.ArmatureDisplay).armatureName = characterData.res;
断点,运行的时候,前2句都没问题,然后到第3句的时候报错了



调试的时候看传的值都没问题,麻烦帮忙看看是啥问题,谢谢啦!

请问你使用的 Creator 版本是多少呢?我看你调试的代码行数跟最新版本的代码是不一样的。麻烦你在新版本中测试一下,或者提供一个可以重现问题的 demo 给我。我来重现并排除一下问题。谢谢反馈!

正式版的1.3.3,还有测试版的1.4.0,2个版本都试了,都不成
下面这个是做的一个demo,麻烦帮忙看看吧!
http://pan.baidu.com/s/1mit0nH2

刚刚调试看了下,你设置的龙骨属性名称是错误的:

// 错误的代码:
this.node.getComponent(dragonBones.ArmatureDisplay).dragonBonesAsset = dbAsset;
this.node.getComponent(dragonBones.ArmatureDisplay).dragonBonesAltasAsset = dbAltasAsset;

// 正确的代码:
// 这里的 dragonBonesAsset 应该是 dragonAsset;dragonBonesAltasAsset 应该是 dragonAtlasAsset
this.node.getComponent(dragonBones.ArmatureDisplay).dragonAsset = dbAsset;
this.node.getComponent(dragonBones.ArmatureDisplay).dragonAtlasAsset = dbAltasAsset;

改后还是有问题。。
1.3.3版本显示不出来,也没有报错和警告。
1.4.0测试版也显示不出来,chrome那边有警告

嗯,我刚刚试了下你的代码还是有些问题。需要在设置新的 DragonBones 资源之前,先清除旧的属性。代码这样来写:

        let armatureDisplay = this.node.getComponent(dragonBones.ArmatureDisplay);
        // clean the dragonBones data used before.
        armatureDisplay.dragonAsset = null;
        armatureDisplay.dragonAtlasAsset = null;
        armatureDisplay.armatureName = '';

        // set the new dragonBones data
        armatureDisplay.dragonAsset = asset;
        armatureDisplay.dragonAtlasAsset = altasasset;
        armatureDisplay.armatureName = arture;

加上清除的语句,还是显示不出来呀:sweat:

是因为你 loadRes 的参数写错了:

// 错误的代码:
cc.loader.loadRes('yingmo_ske',cc.dragonBonesJson,function(err,asset){
    self._yingMoAsset = asset;
    cc.log('asset load completed!');
});
cc.loader.loadRes('yingmo_tex',cc.dragonBonesJson,function(err,altasasset){
    self._yingMoAltsAsset = altasasset;
    cc.log('altasasset load completed!');
})

// 正确的代码:
// 第二个参数应该为正确的资源类型
cc.loader.loadRes('yingmo_ske', dragonBones.DragonBonesAsset,function(err,asset){
    self._yingMoAsset = asset;
    cc.log('asset load completed!');
});
cc.loader.loadRes('yingmo_tex', dragonBones.DragonBonesAtlasAsset,function(err,altasasset){
    self._yingMoAltsAsset = altasasset;
    cc.log('altasasset load completed!');
})

另外,之前提到的清除旧的属性这段逻辑可以不加,但是在 1.4 版本运行会有你提到的 warning。加上清除旧的属性这段逻辑,可以解决 warning 的问题。

试了下,还是有问题,然后打了下实例后prefab的log,下面log是截的结点组件的内容。
如果注释掉init函数里面的内容,打出来的:

不注释init里面的内容,打出来的:

和上面比多了一个重复的dragonAltasAsset属性,不知道显示不出来和这个有没有关系

这里有 typo。应该是 dragonAtlasAsset,不是 dragonAltasAsset。

不太懂,能详细讲下吗
现在还是显示不出来

你代码中设置属性使用的字段拼写错误。应该是 armatureDisplay.dragonAtlasAsset,而你使用了 armatureDisplay.dragonAltasAsset。

好了!谢谢了!
各种没注意的拼写错误,麻烦啦!