在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 );
它不会导致编译器错误,崩溃或任何事情,它只是不会旋转精灵。
我该如何解决这个问题? (我多次使用此操作,因此如果我只能将其定义一次,那么保持我的代码更清洁真的会有所帮助)
答案 0 :(得分:4)
不应在多个对象上同时使用单个CCAction实例。序列中包含的对象在当前执行动作时保持状态,因此在多个对象上的并发使用将导致混乱(科科斯可能通过停止所有动作而无法确定地“保护”它。最好为要设置动画的每个精灵分别设置序列。如果您担心代码可读性,只需在该类中创建一个始终返回序列的新实例的方法。