我如何分组 CCAction
,以便在同时执行所有操作时知道该组中的所有操作何时完成?< / p>
+ (SKAction *)group:(NSArray *)actions
我想在棋盘游戏中使用它。
我正在用CCActions
在我的棋盘上移动我的游戏元素。在所有这些动画结束时,我希望CCActionCallFunc
作为回调来更新游戏逻辑并再次允许用户交互。
理想情况下,我想在CCActionCallFunc
中添加 CCActionGroup 和CCActionSequence
,然后按顺序执行。
答案 0 :(得分:2)
也许你可以试试:
CCActionMoveTo *moveTo; // action to group
CCActionScaleBy *scale; // action to group
CCNode *node;
// Init the above actions...
CCActionSpawn *groupAction = [CCActionSpawn actionWithArray:@[moveTo, scale]];
CCActionSequence *sequence = [CCActionSequence actionWithArray:@[groupAction, [CCActionCallFunc actionWithTarget:self selector:@selector(allDone)]]];
// allDone is your method to run...
[_node runAction:sequence];
答案 1 :(得分:0)
由于cocos2d没有采用任何类型的多线程,你可以按顺序触发动作:
[node runAction:action1];
[node runAction:action2];
[node runAction:action3];
[node runAction:action4];
只需将CCCallBlock添加到运行块的最长运行序列中。如果所有操作都运行相同的长度,您可以将调用块添加到action4
序列,因为它最后完成。
在Sprite Kit中,没有任何保证action1到action4的最后完成,在cocos2d中有:最后一个要运行也将是最后一个完成,假设它们都运行相同的持续时间
这是他们其他行动也将结束的时候。或者,您可以在每个组的末尾为每个组创建一个序列,它们都运行一个CCCallBlock来增加一个计数器,而最后一个块,其中count等于分组动作的数量,执行实际&#34;结束组动作& #34;代码。