2015-06-29 2 views
0

Я не уверен, что то, что я ищу, возможно, но я просто проверяю, чтобы я не делал ничего сложного.Выполнение двух действий в одно и то же время внутри ОДНОЙ последовательности

В настоящее время у меня есть две последовательности, которые одновременно работают одновременно. Каждая последовательность начинается с ожидания в течение 3 секунд, а затем одна последовательность масштабирует узел, а другой настраивает альфа-версию этого узла. Таким образом, код выглядит примерно так:

node.runAction(SKAction.sequence([animationWait, animationScale])) 
node.runAction(SKAction.sequence([animationWait, animationAlpha])) 

Но есть способ запуска как animationScale и animationAlpha в то же время внутри одной последовательности? Так это будет выглядеть примерно так (это не работает, но я надеюсь, что вы можете увидеть, что я пытаюсь сделать):

node.runAction(SKAction.sequence([animationWait, (animationScale, animationAlpha)])) 

ответ

6

Вы можете сгруппировать действия вместе в последовательности:

var actions = Array<SKAction>(); 

actions.append(SKAction.sequence([animationWait, animationScale])); 
actions.append(SKAction.sequence([animationWait, animationAlpha])); 

let group = SKAction.group(actions); 

node.runAction(group); 

Когда действие выполняется, действия, составляющие группу, начинаются немедленно и выполняются параллельно. Продолжительность группового действия - это самая длинная продолжительность среди коллекций действий. Если действие в группе имеет продолжительность, меньшую, чем продолжительность группы, действие завершается, затем простаивает, пока группа не завершит оставшиеся действия. Это наиболее важно, когда вы создаете повторяющееся действие, повторяющее группу.

+0

Спасибо за ваш ответ зла, но я думаю, что решил свою проблему. Однако то, что вы предоставили, поможет мне в другой области моего кода. Спасибо – Jarron

+0

Не волнуйся, удачи! – evilboxingdragonslayer

-1

Я только что проверил что-то, и это, казалось, сработало. Вместо того, чтобы ниже:

node.runAction(SKAction.sequence([animationWait, (animationScale, animationAlpha)])) 

сделать:

node.runAction(SKAction.sequence([animationWait, [animationScale, animationAlpha]])) 

Я удивлен, что это сработало. Я собирался удалить вопрос, но кто-то может найти это удобным.

EDIT:

Ниже больше не работает

node.runAction(SKAction.sequence([animationWait, [animationScale, animationAlpha]])) 

Как предложил evilboxingdragonslayer, вам нужно будет использовать "группу", смотрите ниже:

node.runAction(SKAction.sequence([animationWait, group([animationScale, animationAlpha])])) 
+0

... оба примера - это один и тот же код с копированием. Какой был решенный ответ? : S – msqar

+0

@msqar, они разные, один находится в(), который не работает, а один находится в [], который используется для работы. Я теперь назвал неправильного ответа злоумышленника в качестве правильного ответа, так как единственный способ (который я вижу) сделать два действия одновременно - использовать «группу» SKAction.group ([action1, action2]). Я обновляю свой ответ. – Jarron