Spine(2.1)与 cocos2dx(3.3RC0)版本之间是否存在不兼容,目前尚不确定,但问题已修复。

问题现象:部分 Animation 的名字为 null,导致程序崩溃。在仿写某游戏时,数据文件(JSON)中存在该动画,却始终提示找不到,甚至直接崩溃。跟踪定位到 SkeletonData.c,修改如下。

原代码

spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName) {
	int i;
	for (i = 0; i < self->animationsCount; ++i)
	{
		if (strcmp(self->animations[i]->name, animationName) == 0)
		{
			return self->animations[i];
		}
	}
	return 0;
}

修改后的代码

spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName) {
	int i;
	for (i = 0; i < self->animationsCount; ++i)
	{
		if (!self->animations[i]->name)continue;
		if (strcmp(self->animations[i]->name, animationName) == 0)
		{
			return self->animations[i];
		}
	}
	return 0;
}