2016-03-06 10 views
1

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

+0

skippable ... Если вы имеете в виду на экране на экране и действие завершается, то вам нужно помнить, что такое действия, а на прикосновении просто убить всех t и повторить их с длительностью 0 (или просто вручную установить любое событие), если вы хотите просто остановить все действия, то вы можете просто удалить их. Лучший способ сделать это, дать свои клавиши действий и называть 'removeActionForKey' Не уверен, что есть что-то еще, поэтому я не сделал этого ответа. – Knight0fDragon

+0

Это гениальность ... Я никогда не думал о запуске их с длительностью 0. Сделайте ответ, и я соглашусь. Спасибо приятель! – 02fentym

ответ

1

Это предполагает, что вы хотите нажать, чтобы остановить действия:

очень легко, но, возможно, неустойчив подход был бы просто провернуть скорость узла действие выполняется на безумно большое количество, только не забудьте сбросить если вам нужен узел.

Простой подход, который является более стабильным, состоял бы в том, чтобы сохранить ваши действия и повторно применить их с длительностью нуля.

Лучший способ сделать это, чтобы создать Dictionary для SKAction с так:

var actionDict = [String,SKAction]() 

Тогда просто сохранить все ваши действия с ключами, так что вы можете получить доступ к нему в будущем:

actionDict["moveUp"] = SKAction.moveToY(100,duration:100) 

Теперь, когда у вас есть ключи для этого, при выполнении ваших действий, просто присвоить тот же ключ:

node.runAction(actionDict["moveUp"],withKey:"moveUp") 

Затем, когда вам нужно, чтобы закончить его, просто удалить нужные действия:

node.removeActionForKey("moveUp") 

И повторно с длительностью 0:

//if we want to retain the old duration, use copy 
let action = actionDict["moveUp"].copy() 
action.duration = 0 
node.runAction(action,withKey:"moveUp") 

Примечание, этот метод работает только тогда, когда действие делает Для события, если он выполняет событие By, вам нужно выяснить конечную точку назначения и сделать его moveTo a с продолжительностью 0

Смежные вопросы