ios - CCActionSequence 同时运行所有 Action

标签 ios objective-c animation cocos2d-iphone

我在 cocos2d v3.0(iPhone,Objective-C)中使用 CCActionSequence 时遇到问题。

我创建了一个带有一些文本的标签。我希望它在淡出时向上移动。之后,将其从场景中移除。我创建了 3 个 Action :moveBy、Fade 和 Remove。查看网络上的一些教程,我应该能够将操作与 CCActionSequence 链接在一起。然而,当我这样做时,所有三个 Action 同时运行,基本上在淡入淡出和移动动画开始之前删除了我的标签。

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 的宏

最佳答案

我认为问题是在同一节点上调用 runAction 两次。

编辑:正如LearnCocos2D在调用runAction的评论中提到的那样,只要操作不互相干扰(即在同一节点并行运行),因此这要么是版本 3.x 中的行为更改,要么是您的 ALERT_FADE_DURATION 定义太小(也如注释中所述)

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

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

[labelDP runAction:sequenceAction];

这应该会给你带来想要的效果。首先移动并淡化标签,然后将其从其父节点中删除

关于ios - CCActionSequence 同时运行所有 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24281440/

相关文章:

ios - FBSDKAccessToken currentAccessToken 退出app后为nil

ios - NSAttributedText 字体大小根据 UILabel 宽度变化

ios - prepareForSegue 在 UIButton Action 事件之前调用

iphone - 检查 nsstring 是否与另一个字符串匹配

ios - 在 viewdidload 方法中将高度应用于静态 uitableviewcell

ios - 创建一个具有多种颜色的圆

ios - viewDidAppear 时如何调用 pickerview 的委托(delegate)?

html - CSS3 无限旋转

元素的 CSS 悬停应触发相反的过渡

android - 在 Activity 生命周期中什么时候开始动画?