spine通过JSB调原生函数BUG!(含demo!!!)。

demo地址:
https://pan.baidu.com/s/18WkPUSDYA78x0Qgyu1F15Q
y8om

引擎组各位大神你好,有个问题迫切希望得到你们的帮助:
我们这边用spine局部换装,在“原生”换装中遇到些问题:
情况描述:两个spine,一个人物spine(用A代表),一个头像spine(用B代表),想用B的一个纹理来替换A的头。
具体做法:用B的一个attachment来替换A的头部slot中的一个attachment。

A在替换前的样子:

替换头部后的期望结果:

但实际结果是:


我在纯原生android下(通过SkeletonAnimation创建),是可以实现出效果的:

但是从js调用原生绑定方法,就不行,结果就变成这样:


代码如下:
Ts代码:

c++绑定代码:


另外一种实现方法也不行:

creator用的是2.0.9
纯原生版本我用的是cocos2d-x-3.17

demo以上传,麻烦引擎组大大给看看。

要命的是,在cocos2dx的c++下,和在ccc通过jsb调c++下,最终调用的spine方法是一模一样的,连堆栈信息中的数据都是一样的,但结果不一样
所以我才很怀疑是问题应该是出在spineRenderer和skeletonRender的区别

你好,感谢反馈。
是因为目前spine的渲染方式导致不能A骨骼使用B骨骼的贴图进行渲染,因为spine在c++层进行simulator的,由于在C++层没有texture对象,所以只能传一个texture索引到c++层,而索引只能对A骨骼自己的贴图进行映射,所以也就导致了A骨骼只能使用自己的贴图,不能用其它骨骼的贴图。 在v2.3的版本,我们在c++层实现了texture对象,这种问题就没了。

你好,谢谢您回复,您提到的v2.3版本,现在ccc的最新版本不是才2.1.1吗?从哪里可以得到ccc的2.3版本?

你好,谢谢您回复,您提到的v2.3版本,现在ccc的最新版本不是才2.1.1吗?从哪里可以得到ccc的2.3版本?

是在 2.2 版本,相关代码: https://github.com/cocos-creator/cocos2d-x-lite/pull/1738

好的,我看能不能融合到2.0.8的版本中,再次感谢!

你好,重新提了个pr,这个pr不需要你去绑定了,用法和web一样就可以局部换装了
这个pr是2.2的,所以如果你如果要合到2.0的话,可能工作量有点大,材质系统不一样了。
https://github.com/cocos-creator/cocos2d-x-lite/pull/1754
另外我能用你的资源作个spine换装的教程么:blush: