单独定义时,CCSequence无法正常工作

时间:2012-10-13 12:07:46

标签: cocos2d-iphone cocos2d-x

在cocos2d-x中,我在尝试单独定义CCSequence时遇到了以下问题,即不在runAction中。

这有效:

sprWheel1->runAction(   CCSequence::actions(
    CCDelayTime::actionWithDuration( fDelayTime ),
    CCEaseExponentialOut::actionWithAction( 
        CCRotateBy::actionWithDuration( fMoveTime, fAngle ) ),
    NULL
) );
sprWheel2->runAction(   CCSequence::actions(
    CCDelayTime::actionWithDuration( fDelayTime ),
    CCEaseExponentialOut::actionWithAction( 
        CCRotateBy::actionWithDuration( fMoveTime, fAngle ) ),
    NULL
) );

这不起作用:

CCFiniteTimeAction* actRotate = CCSequence::actions(
    CCDelayTime::actionWithDuration( fDelayTime ),
    CCEaseExponentialOut::actionWithAction( 
        CCRotateBy::actionWithDuration( fMoveTime, fAngle ) ),
    NULL
);

sprWheel1->runAction( actRotate );
sprWheel2->runAction( actRotate );

它不会导致编译器错误,崩溃或任何事情,它只是不会旋转精灵。

我该如何解决这个问题? (我多次使用此操作,因此如果我只能将其定义一次,那么保持我的代码更清洁真的会有所帮助)

1 个答案:

答案 0 :(得分:4)

不应在多个对象上同时使用单个CCAction实例。序列中包含的对象在当前执行动作时保持状态,因此在多个对象上的并发使用将导致混乱(科科斯可能通过停止所有动作而无法确定地“保护”它。最好为要设置动画的每个精灵分别设置序列。如果您担心代码可读性,只需在该类中创建一个始终返回序列的新实例的方法。