Блок завершения действия SKNode не вызывается - PullRequest
0 голосов
/ 25 мая 2018

У меня есть приложение watchOS 4, которое отображает анимацию SpriteKit (SKActions) поверх пользовательского интерфейса.Все отлично работает в симуляторе, а также на устройстве сначала пару раз, а затем через некоторое время, когда приложение находится в фоновом режиме, и оно запускается, анимации просто замирают, и блок завершения для наиболее продолжительной анимации не вызывается.Любая идея, в чем может быть проблема?

Вот как я запускаю свои действия, вызывающая сторона ожидает закрытия completion, чтобы скрыть сцену спрайтекита:

private func runActions(with icon: SKShapeNode?, completion: @escaping () -> Void) {
    if let icon = icon, let scaleAction = scaleAction, let bg = background {
        self.label?.run(fadeInOutAction)
        icon.run(scaleAction)
        icon.run(fadeInOutAction)
        bg.run(backgroundAction, completion: completion)
    } else {
        completion()
    }
}

И да,Мне известно, что SKScene приостанавливается, когда приложение переходит в фоновый режим.Я делаю это в willActivate моего InterfaceController:

if scene.scene?.isPaused == true {
    scene.scene?.isPaused = false
}

Я хочу подчеркнуть, что это работает в первую очередь всегда.Это начинает терпеть неудачу после того, как приложение было фоново в течение некоторого времени.Особенно, если я запустил приложение из-за усложнений и попытался немедленно запустить эти анимации, то это зависание происходит.

1 Ответ

0 голосов
/ 29 мая 2018

Могу ли я ответить на свой вопрос?Я думаю, я могу?Здесь идет:

Я наконец решил это.Оказывается, что WKInterfaceScene в WatchKit также имеет свойство isPaused, которое иногда нужно включить false.Так что теперь в willActivate моего InterfaceController я также проверю это и поверну false, если оно true.С тех пор как я сделал это изменение, я больше не видел ни одного сбоя, замораживания или чего-то странного.

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

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