Я пытаюсь переместить SKNode на экран по команде. Я установил следующую цепочку SKAction, чтобы 1) узел перемещался вверх и выключен, а затем 2) узел перемещается вниз в исходное место, затем 3) начинает перемещаться. Я использовал следующий код, чтобы попытаться осуществить это:iOS SpriteKit SKAction завершение вызова не работает/создает нечетные результаты
SKAction *moveUp = [SKAction moveTo: shipIntroSpot1 duration:3.0];
SKAction *moveDown = [SKAction moveTo:shipSpot1 duration:ship1MovementSpeed];
[self enumerateChildNodesWithName:@"ship1" usingBlock:^(SKNode *node, BOOL *stop) {
NSLog(@"RUNNING MOVE UP");
[node runAction: moveUp];
[node runAction:moveUp completion:^{
NSLog(@"RUNNING MOVE DOWN");
[node setHidden: NO];
[node runAction: moveDown];
}];
[node runAction:moveDown completion:^{
NSLog(@"STARTING MOVEMENT");
}];
Однако SKActions не по всей видимости, стреляя в правильном порядке. Я использовал код так, чтобы как только один шаг был завершен, начнется следующее. Тем не менее, SKAction, похоже, не слишком быстро перемещает узел до начала следующего SKAction. Я был под впечатлениями, что использование вызова завершения означает, что следующее действие не начнется, пока предыдущий не завершится? Это, похоже, не так. Кроме того, если я оставлю достаточно длительную продолжительность для шага 1 (ПЕРЕМЕЩЕНИЕ), он пропустит шаг 2 (ДВИЖЕНИЕ ВНИЗ) и начнет выполнение шага 3 (ЗАПУСК ДВИЖЕНИЯ). Я понятия не имею, как это возможно. Если бы кто-нибудь мог указать на мою ошибку в понимании того, как правильно сгруппировать разные действия, я был бы признателен.
(я не делал последовательность SKAction, потому что я должен «Unhide» узел на полпути. Я не думаю, что я могу положить, что в последовательности, если я тоже не ошибаюсь об этом.)
найдите последовательность действий, если вы хотите запустить одно действие за другим (последовательно). – LearnCocos2D