SKTransition не работает в Swift
У меня есть очень простая игра SpriteKit, написанная на Swift, с двумя сценами, между которыми я пытаюсь перейти. Этот код работает отлично:
let skView = self.view as SKView
let scene = GameScene(size: self.scene.size)
scene.size = skView.bounds.size
scene.scaleMode = .AspectFill
//This line shows the new scene immediately (as expected)
skView.presentScene(scene)
Проблема возникает, когда я заменяю приведенную выше строку кода следующим:
let sceneTransition = SKTransition.doorsCloseHorizontalWithDuration(2.0)
skView.presentScene(scene, transition: sceneTransition)
Когда я это делаю, ничего не происходит (текущая сцена остается на экране). Я пробовал несколько разных переходов, но всегда с одинаковым результатом.
Какие-нибудь мысли?
2 ответа
Решаемые.
Оказывается, нет ничего плохого в коде выше. Проблема заключалась в том, что я пытался выполнить его в функции обновления на основе конкретной позиции SKPhysicsBody. Переход не происходит мгновенно, поэтому он дал время для повторного вызова update, что вызывало повторный запуск перехода снова и снова. Это привело к тому, что переход никогда не происходил.
Исправление состояло в том, чтобы добавить bool, чтобы проверить, начал ли я переход, поэтому я делаю попытку только один раз.
Если кто-то еще испытывает это, вы также можете приостановить исходящую сцену. Некоторая логика в этом может быть изменением состояния или вмешательством в переход.
попробуйте установить
transition.pausesOutgoingScene = YES;
чтобы увидеть, поможет ли это,
или используйте это как решение, если это ваше намерение, или установите точки останова (попробуйте update:
после того, как переход создан) и посмотрим, что случилось.