2014-06-18 32 views
0

我在使用cocos2d v3.0(iPhone,Objective-C)中的CCActionSequence时遇到问题。CCActionSequence同时运行所有操作

我用一些文字创建了一个标签。我希望它在淡出时向上移动。之后,将其从场景中移除。我创建了3个动作:moveBy,Fade和Remove。看一下网上的一些教程,我应该能够将操作与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

+1

无法找到代码中的任何问题,你可以依次包括所有动作即'[labelDP runAction:[CCActionSequence actions:actionMove,actionFade,actionRemove,nil]];'看效果 –

+2

如何声明ALERT_FADE_DURATION? – LearnCocos2D

+0

@InderKumarRathore:尝试过,结果相同 – l3utterfly

回答

1

宏,我相信这个问题是在同一节点上调用runAction两次。

编辑:作为LearnCocos2D在调用runAction,曾多次应工作,只要行动不与对方(即,两个移动并行运行在同一节点上操作)干扰的评论中提到所以它要么行为在3.x版变更或者你ALERT_FADE_DURATION定义太小(如在评论中指出的一样)

尝试使用CCActionSpawn动作可以运行在同一节点上并行操作:

CCAction *spawnAction = [CCActionSpawn actionWithArray:@[actionMove , actionFade]]; 
CCAction *sequenceAction = [CCActionSequence actionWithArray:@[spawnAction]]; 

[labelDP runAction:sequenceAction]; 

钍是应该给你想要的效果。首先移动和褪色的标签,然后才从其父节点中删除,

+1

可以重复调用runAction:这是平行运行而不是按顺序运行的常用方式。除非此行为在v3中已更改。 – LearnCocos2D

+0

是的,这些行为不会互相干扰,但他的代码看起来是合法的,因此它的v3中的变更(我无法找到批准的来源)或ALERT_FADE_DURATION的问题,因为您已经注意到 – giorashc

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]]; 
相关问题