[英]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.