cocos2dx-js v3.2 调用cocos studio1.6 导出的动画play()出错

最近用上cocos2dx-js v3.2, 用cocosstudio 1.5,1.6导出了里面的样例动画 Cowboy和Hero,结果在play()的时候控制台弹出了: Uncaught TypeError: Cannot read property ‘r’ of undefined 这个错误。我把所有动画文件放到cocos2dx-js v3.0创建的一个项目下播放,没有出问题。我的代码如下

        ccs.armatureDataManager.addArmatureFileInfo(res.hero_json);
        var armature = new ccs.Armature("Hero");
        armature.getAnimation().play("run");
        armature.scale = 2;
        this.addChild(armature);


```

检查过了,一直到play()才出问题。
同时,我从cocos2dx-js v3.2 的js-Test这个项目里面拿出他们的动画文件放到cocos2dx-js v3.2创建的项目中,能够play(),而且通过阅读样例json,发现他们是1.0000版本的studio导出的。
请问有没有遇到同样为问题的亲呢?

楼主问题解决了吗 ,我也是同样问题,初学,实在晕啊,求解答

这个好像是引擎的bug,jsb没有问题,html5有问题,临时解决方法:

frameworks/cocos2d-html5/extensions/cocostudio/armature/CCBone.js:

@@ -266,9 +266,12 @@ ccs.Bone = ccs.Node.extend(/** @lends ccs.Bone# */{
if (display != null) {
display.setColor(
cc.color(

  •                    this._displayedColor.r * this._tweenData.r / 255,
    
  •                    this._displayedColor.g * this._tweenData.g / 255,
    
  •                    this._displayedColor.b * this._tweenData.b / 255));
    
  •                    this._realColor.r * this._tweenData.r / 255,
    
  •                    this._realColor.g * this._tweenData.g / 255,
    
  •                    this._realColor.b * this._tweenData.b / 255));
    

+// this._displayedColor.r * this._tweenData.r / 255,
+// this._displayedColor.g * this._tweenData.g / 255,
+// this._displayedColor.b * this._tweenData.b / 255));
display.setOpacity(this._displayedOpacity * this._tweenData.a / 255);
}
},
… …
@@ -701,7 +704,8 @@ ccs.Bone.RenderCmd = {
var displayCmd = display._renderCmd;
display.setColor(cc.color( node._tweenData.r, node._tweenData.g, node._tweenData.g));
display.setOpacity(node._tweenData.a);

  •        displayCmd._syncDisplayColor(this._displayedColor);
    

+// displayCmd._syncDisplayColor(this._displayedColor);

  •        displayCmd._syncDisplayColor(this._realColor);
           displayCmd._syncDisplayOpacity(this._displayedOpacity);
           displayCmd._updateColor();
       }

是有这个问题。。。

不过看到新代码里面已经修复了

    var display = this._displayManager.getDisplayRenderNode();
    if (display != null) {
        var cmd = this._renderCmd;
        display.setColor(
            cc.color(
                    cmd._displayedColor.r * this._tweenData.r / 255,
                    cmd._displayedColor.g * this._tweenData.g / 255,
                    cmd._displayedColor.b * this._tweenData.b / 255));
        display.setOpacity(cmd._displayedOpacity * this._tweenData.a / 255);
    }

这里的this._displayColor是错的,其实是在this._renderCmd._displayColor,对象的引用错了。:6::6:

嗯,那就等周末3.3的版本

没办法,是这个版本的引擎问题。