龙骨动画 > android、ios、模拟器无法获得动画长度 creator 1.10.2

估计是c++那边的龙骨库没有定义获取动画数据的接口,导致native的时候直接就undefined了。
反正目前我使用
dragonBones.ArmatureDisplay.armature().animation.animations[“动画名字”].duration
是直接就animations无定义了,web端没问题,就是要经过c++的就不行。当然还有其它的获取方法,比如
dragonBones.ArmatureDisplay.armature().armatureData…
等等,也都一个样,应该是c++那边的龙骨库实在是太久太久没更新了吧。

最后我单纯用js来自己解析而获得动画长度,幸亏还能获得动画文件的原始数据(不过我更希望官方完善这个东西),我目前的解决方案代码
/**
* 获取target下使用的龙骨动画的当前armature下的动画时间长度,直接来自动画数据
* @param target {cc.Node} 龙骨动画组件的所有者节点,也可以是其父节点
* @param name {string} 动画的名字
* @return {number} 动画长度(秒)
/
duration: function(target, name) {
let time = 0;//默认时长
let ar = target.getComponentInChildren(dragonBones.ArmatureDisplay);
if(ar && ar.dragonAsset) {
let data = JSON.parse(ar.dragonAsset.dragonBonesJson);//动画文件数据json化,下面的操作实际得对照运行数据结构
let fr = data.frameRate
1.0 || 24.0;
for(let a = 0; a < data.armature.length; a++) {//得到当前使用的骨架
if(data.armature[a].name === ar.armatureName) {
let anims = data.armature[a].animation;//当前骨架动画列表
for(let i = 0; i < anims.length; i++) {
if(anims[i].name === name)
return anims[i].duration / fr;//文件结构里duration是按帧数来记录的
}
return time;
}
}
}
return time;
}

谢谢反馈 我看下

你好 剛剛查了下C++源碼 發現缺失了animations屬性定義 你可以先將這個cpp文件覆蓋到編輯器的resources\cocos2d-x\cocos\scripting\js-bindings\auto下重新編譯,暫時處理這個問題jsb_cocos2dx_dragonbones_auto.rar (11.3 KB)

你好,2.3.3还存在这个问题

搜到这个的朋友们,替换前先保存原始文件。如果换了之后不行,还能换回来。要不然就要重新下载了。