我在cocos2d v3.0(iPhone,Objective-C)中使用CCActionSequence时遇到问题。
我创建了一个带有一些文字的标签。我希望它在淡出时向上移动。之后,将其从场景中删除。我创建了3个动作:moveBy,Fade和Remove。看一下Web上的一些教程,我应该能够将动作与CCActionSequence链接在一起。但是,当我这样做时,所有三个动作同时运行,基本上在淡入淡出之前移除我的标签并移动动画。
CCLabelTTF *labelDP = [CCLabelTTF labelWithString:@"Double Points!" fontName:@"Helvetica" fontSize:16.0f];
labelDP.positionType = CCPositionTypeNormalized;
labelDP.position = ccp(0.5f,0.5f);
labelDP.color = [CCColor colorWithWhite:1.0f alpha:1.0f];
[self addChild:labelDP];
CCAction *actionMove = [CCActionMoveBy actionWithDuration:ALERT_FADE_DURATION position:ccp(0.0f, 40.0f)];
CCAction *actionFade = [CCActionFadeOut actionWithDuration:ALERT_FADE_DURATION];
CCAction *actionRemove = [CCActionRemove action];
[labelDP runAction:actionFade];
[labelDP runAction:[CCActionSequence actions:actionMove, actionRemove, nil]];
是否有设置使这些动画按顺序而不是同时运行?因为在我看到的所有教程中,他们似乎能够使用与上面类似的代码行来实现它。
任何帮助都将不胜感激。
编辑:ALERT_FADE_DURATION是一个定义为2.0f的宏
答案 0 :(得分:1)
我认为问题是在同一节点上两次调用runAction
。
编辑:正如调用runAction
的注释中提到的LearnCocos2D,只要操作不相互干扰(即同一节点上的两个移动操作),就应该工作一次并行)因此它可能是版本3.x中的行为更改,也可能是您的ALERT_FADE_DURATION定义太小(如注释中所述)
尝试使用可以在同一节点上并行运行操作的CCActionSpawn
操作:
CCAction *spawnAction = [CCActionSpawn actionWithArray:@[actionMove , actionFade]];
CCAction *sequenceAction = [CCActionSequence actionWithArray:@[spawnAction]];
[labelDP runAction:sequenceAction];
这应该会给你带来理想的效果。首先移动并淡化标签,然后将其从父节点中删除
答案 1 :(得分:0)
试试这个:
CCAction *actionMove = [CCActionMoveBy actionWithDuration:ALERT_FADE_DURATION position:ccp(0.0f, 40.0f)];
CCAction *actionFade = [CCActionFadeOut actionWithDuration:ALERT_FADE_DURATION];
CCAction *actionRemove = [CCActionRemove action];
id seq = [CCActionSequence actions:actionMove, actionRemove, nil];
[labelDP runAction:[CCActionSpawn actions:actionFade, seq, nil]];