[英]Is it possible to synchronize actions in cocos2d-x?
我需要在cocos2d-x中的节点集合上运行一个动作,然后在所有这些动作完成后运行回调。
例如。 我有20个对象,我希望它们缩放到定义的值,并且所有这些操作完成后,我想更新屏幕上的另一个对象(我们称它为球)。
我试着在固定延迟之前附加在球上运行动作,该固定延迟应考虑到之前列表中最长动作的总执行时间。 即使这种方法效果很好,有时也会在第一个列表中的最后一个对象完成其自身操作之前执行延迟的操作。 此外,这些动作中的每一个动作的执行时间可能会不时变化,因此对于最坏的情况,固定延迟将是一个猜测值。 我认为不是很好。
使用所提供的API,cocos2d-x中是否可以通过本机实现此目的?
我会这样处理(在objc中,希望c ++ sdk具有类似的功能):
_animComletes = 0; // must be an iVar
_maxBalls = [_nodes count]; // nust be an iVar
for (CCNode *nn in _nodes) {
id oneObject = [CCSequence actions:
[CCScaleTo actionWithDuration:.25 scale:.35],
[CCCallBlock actionWithBlock:^{
_animCompletes++;
if (_animCompletes == _maxBalls) {
[self scheduleOnce:@selector(updateBall) delay:0];
}
}], nil];
[nn runAction:oneObject];
}
-(void) updateBall {
_animCompletes = 0;
_maxBalls = 0;
// do your thing
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.