我有一个将Tween
方法用于许多动画的应用程序。补间之一是以下内容:
pipe_Tweener.Tween(3.2f,
FLOAT, &pSprite->m_X, (float) -pSprite->GetImage()->GetWidth(),
FLOAT, &pSprite->m_Y, (float) pSprite->m_Y,
FLOAT, &pSprite->m_X, (float) -pSprite->GetImage()->GetWidth(),
FLOAT, &pSprite->m_Y, (float) pSprite->m_Y,
ONCOMPLETE, &Game::ResetP,
END);
另一个是:
pipe_Tweener.Tween(JUMP_TIME,
FLOAT, &bSprite->m_X, (float) bSprite->m_X,
FLOAT, &bSprite->m_Y, (float) bSprite->m_Y-JUMP_HEIGHT,
EASING, Ease::sineOut,
ONCOMPLETE, &Game::EndAnimating,
END);
当使用x86调试进行调试时,这些补间似乎可以正常工作。但是,当我使用GCC ARM调试时,最终在
IwTween.cpp
的第360行出现IwAssert错误。我已经调试了
Tween
方法,并且注意到,对于我的第一个补间来说,一切都很好,我可以看到该方法遍历了每个Type
(FLOAT
,FLOAT
,FLOAT
,FLOAT
,ONCOMPLETE
,END
)。但是对于第二个补间,当Tween
方法进入END
枚举时,Type
变为0(因此我看到Type
(FLOAT
,FLOAT
,EASING
,ONCOMPLETE
,0
,ojit_code)导致默认case语句执行,从而调用断言失败。我不确定我是在做错什么还是这是果酱本身的错误?
最佳答案
我实际上已经解决了这个问题,但我会发贴,以免对其他人有帮助。
我的EndAnimating
方法不是静态的,这在Tween
方法中引起了一些问题。奇怪的是,它仅在使用ARM仿真器进行调试时才引起问题。