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;
}