主要是那些只有1帧的part,到处乱飞
我也发现了,目前在编辑器将各个帧序列补全成同样帧数,就ok了。
问题修复了,void Bone::update(float delta) 这个方法里面:
if (_dataVersion >= VERSION_COMBINED)
{
TransformHelp::nodeConcat(*_tweenData, *_boneData);
_tweenData->scaleX -= 1;
_tweenData->scaleY -= 1;
}
_worldInfo->copy(_tweenData);
_worldInfo->x = _tweenData->x + _position.x;
_worldInfo->y = _tweenData->y + _position.y;
_worldInfo->scaleX = _tweenData->scaleX * _scaleX;
_worldInfo->scaleY = _tweenData->scaleY * _scaleY;
_worldInfo->skewX = _tweenData->skewX + _skewX + _rotationZ_X;
_worldInfo->skewY = _tweenData->skewY + _skewY - _rotationZ_Y;
污染了 _tweenData。 当帧数较少时,其他帧序列在更新,而这个帧序列不更新 _tweenData,所以会导致它累积 _boneData 进去。
修改后的代码如下:
_worldInfo->copy(_tweenData);
if (_dataVersion >= VERSION_COMBINED)
{
TransformHelp::nodeConcat(*_worldInfo, *_boneData);
_worldInfo->scaleX -= 1;
_worldInfo->scaleY -= 1;
}
_worldInfo->x += _position.x;
_worldInfo->y += _position.y;
_worldInfo->scaleX *= _scaleX;
_worldInfo->scaleY *= _scaleY;
_worldInfo->skewX += _skewX + _rotationZ_X;
_worldInfo->skewY += _skewY - _rotationZ_Y;
官方最新代码还没有修复呢,谁来提交一下。。
https://github.com/cocos2d/cocos2d-x/blob/v3/cocos/editor-support/cocostudio/CCBone.cpp
好顶赞~~解决了大BUG~