spine获取一个bone数据后,修改bone数据无效

只试过原生环境
let bone = skeleton.findBone(‘gun’);
bone.rotation = 100;
skeleton.updateWorldTransform();
这样做对应骨骼没有变化
原生环境下bone是通过jsb导出的,直接修改属性,C++中spBone的属性没有变化,有没有办法能修改spBone的属性,使调用updateWorldTransform();后可以生效

抱歉原生平台暂时没办法实现,技术上因为 spine 底层是 C 的结构体,所以暂时没办法做到数据绑定。

解决了,只能手动导出一个方法,但这种参数处理方法不太合理
希望以后可以解决这个问题

if (argc == 3) {
		const char* arg0;
		std::string arg0_tmp; ok &= jsval_to_std_string(cx, args.get(0), &arg0_tmp); arg0 = arg0_tmp.c_str();
		int arg1;
		ok &= jsval_to_int32(cx, args.get(1), (int32_t *)&arg1);
		int arg2;
		ok &= jsval_to_int32(cx, args.get(2), (int32_t *)&arg2);
		JSB_PRECONDITION2(ok, cx, false, "Error processing arguments");
		spBone* ret = cobj->findBone(arg0);
		jsval jsret = JSVAL_NULL;
		do {
			if (ret)
			{
				switch (arg1)
				{
				case 0:
					ret->rotation = arg2;
					break;

				case 1:
					ret->x = arg2;
					break;

				case 2:
					ret->y = arg2;
					break;

				default:
					break;
				}
			}
		} while (0);

		args.rval().setUndefined();
		return true;
	}
2赞

关注,楼主赞啊

微信小游戏上的修改bone数据如何让其生效,我设置了没有生效。

代码如下:
this.m_spineAnimation.updateWorldTransform();
let bone : sp.spine.Bone = this.m_spineAnimation.findBone(“tou”);
cc.warn(bone);
bone.rotation = 1;
bone.updateAppliedTransform();
cc.error(bone);
animationName = “idle”;