使用GCC ARM进行调试时END枚举的问题

时间:2014-03-04 01:20:36

标签: android c++ marmalade

我有一个应用程序,它使用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方法进行了调试,我注意到的是,对于我的第一个补间,一切都很好,我可以看到每个TypeFLOAT,{FLOAT { {1}},FLOATFLOATONCOMPLETEEND)。但是对于第二个补间,当Tween方法到达END枚举时,Type变为0,(所以我看到TypeFLOAT,{{ 1}},FLOATEASINGONCOMPLETE)导致执行默认case语句,从而调用断言失败。

我不确定我做错了什么,或者这是否是Marmalade本身的错误?

1 个答案:

答案 0 :(得分:1)

我实际上已经解决了这个问题,但我会发布以防万一它会帮助其他人。 我的EndAnimating方法不是静态的,这导致了Tween方法中的一些问题。奇怪的是,只有在使用ARM模拟器进行调试时才会出现问题。