2.0以前的版本,当一个ccsprite运行一个ccrepeatforever的动作后,如果再次run一个action,则之前无限循环的动作会停止,播放完新action后继续播放之前的循环动画。
可是2.0以后的版本似乎如果ccsprite运行了一个CCRepeatForever的action后,当再次run一个action后,会同时运行两个动画。这是为什么呢?比如我写个例子:
CCSprite* spr = CCSprite::create("spr.png");//创建一个精灵
spr->setPosition(ccp(size.width/2, size.height/2));//设置坐标
this->addChild(spr,3,3);//添加到layer
spr->runAction(CCRepeatForever::create(CCRotateBy::create(1.0f, 60.0f)));//运行一个无限循环动作,让精灵每一秒旋转60度
然后定义一个按钮,在按钮的回调中定义新动作如下:
CCSprite* spr = (CCSprite*)this->getChildByTag(3);
if (spr)
{
spr->runAction(CCMoveBy::create(2.0f, ccp(20.0f,0.0f)));
}
如果是老版本的cocos2d-x,则精灵会先停止旋转然后位移,移动后则恢复旋转,为什么2.0以上的版本会同时旋转并位移呢。怎么避免这种同时运行action。