2016-10-13 2 views
1

У меня есть приложение, использующее SpriteKit, который переходит между разными сценами при вводе пользователя. Я определил все сцены в отдельных файлах .sks и каждый содержит Sprite с переходом SKAction (AnimateWithTextures Действие из библиотеки объектов).Доступ к действию, определенному в редакторе сцен

Что я хочу сделать, это дать пользователю возможность установить длительность перехода в настройках. Для этого мне нужен доступ к SKAction со сцены, но он не может найти способ получить доступ к нему программным путем. Я знаю, что могу установить ключ при запуске действия из кода с run: withKey:, но могу ли я установить этот ключ из редактора сцен?

+0

Ответ на этот вопрос также содержит код для вытаскивания действия из сцены: http://stackoverflow.com/questions/37353120/how-to-get-all-actions-name-on-xcode-action- editor-in-sks-file-spritekit-action – Jeff

ответ

1

Если вы размещаете Actions в файле SKScene, то он будет срабатывать на предоставленной временной шкале, вы не сможете его захватить и удерживать. Но то, что вы можете сделать, находится на таблице временной шкалы в вашем файле сцены, делает CMD + щелчок по вашему желаемому действию. и сохраните его как ссылку. Это создаст файл sks, в котором будут размещаться ваши действия.

Теперь, когда у вас есть действия в файле действий, вы можете использовать SKAction(named:"actionname"), чтобы вытащить его.

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

+0

Хорошо, я реорганизовал переходы «in» и «out» в отдельный файл и добавил их в сцену через библиотеку объектов. Я могу получить к ним доступ в коде, но когда я изменяю продолжительность в 'didMove (для просмотра: SKView)' с 'intro.duration = 1', это не работает. Я меняю его на неправильную функцию или мой подход совсем не так? – smeshko

+0

- это вступление в силу вашего исчезновения? – Knight0fDragon

+0

Я также попытался получить доступ к действию, изменив его продолжительность, а затем вручную выполнив его с помощью функции 'run', но он все равно не работает. – smeshko

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