由于开始使用cocostudio的时候 默认最后一帧不会放到,导致我们后面做的很多动画都 默认有一帧空白帧。。
随着版本更新 到后面变成了 最后一帧有些动画会放,然后循环播放动画的时候,出现了闪帧的问题(闪一下空白帧)
这个bug查了很久,最近项目上线的压力,只能详细debug 最后发现的问题在void CCTween::updateHandler() 这个函数中
void CCTween::updateHandler()
{
if (m_fCurrentPercent >= 1)
{
…
case ANIMATION_TO_LOOP_FRONT:
{
m_eLoopType = ANIMATION_LOOP_FRONT;
m_iNextFrameIndex = m_iDurationTween > 0 ? m_iDurationTween : 1;
if (m_pMovementBoneData->delay != 0)
{
//
m_fCurrentFrame = (1 - m_pMovementBoneData->delay) * (float)m_iNextFrameIndex;
m_fCurrentPercent = m_fCurrentFrame / m_iNextFrameIndex;
}
else
{
m_fCurrentPercent = 0;
m_fCurrentFrame = 0;
}
…
超过100%的时候 不管超过多少都会将帧设置为0 就出现了随机闪现的问题 也就是中间有很小的一部分时间被截掉了,然后出现了闪的问题(随机出现最后一帧)
m_fCurrentPercent = fmodf(m_fCurrentPercent, 1);
m_fCurrentFrame = fmodf(m_fCurrentFrame, m_iNextFrameIndex);
改为这样后 就保留了那部分被截掉的时间
这样修改了以后 也不知道为什么就不会出现最后一帧了,原意是想让所有动画都出现空白帧闪的问题,然后在json文件读取器里面吧最后一帧截掉,不过我自己查看动画除了最后一帧都不会播放到,也就无所谓啦。。
希望官方尽快查看这个bug的问题~