Изменение сцен после межстраничного объявления (SpriteKit)

Вот код, который запускается при нажатии кнопки перезагрузки. Игра сбрасывает счет, воспроизводит рекламу и рекламу, а затем возвращается к игровой сцене.

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

  if restartButton.contains(pointOfTouch) {

            score = 0

            displayAd()



            let sceneToMoveTo = GameScene(size: self.size)
            sceneToMoveTo.scaleMode = self.scaleMode
            let myTransition = SKTransition.fade(withDuration: 0.5)
            self.view!.presentScene(sceneToMoveTo, transition: myTransition)

        }

person nix.codes    schedule 13.05.2017    source источник
comment
Я пробовал interstitialDidDismissScreen(ad: GADInterstitial), но это не сработало. Хотя я не уверен, правильно ли я поставил в скобках.   -  person nix.codes    schedule 13.05.2017
comment
То, что вы описываете, - это то, что в настоящее время делает ваш код. Итак, что вы можете сделать, это уведомить сцену, когда реклама закончена / закрыта. Для этого вы можете опубликовать уведомление и добавить сцену в качестве наблюдателя этого уведомления (и соответственно запустить соответствующий код).   -  person Whirlwind    schedule 13.05.2017
comment
У вас есть ссылка на учебник, на которую вы могли бы указать мне для этого?   -  person nix.codes    schedule 13.05.2017
comment
это уведомление, которое я сейчас использую для вызова своего объявления func displayAd() { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "loadAndShow"), object: nil) }   -  person nix.codes    schedule 13.05.2017


Ответы (1)


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

 func delay(_ delay:Double, closure:@escaping ()->()) {
         let when = DispatchTime.now() + delay
         DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
 }

А затем поместил смену сцены в функцию задержки, например так

 delay(2.0) {
    self.changeScene()
 }

2.0 — это время в секундах, поэтому это говорит о том, что код будет ждать 2 секунды, а затем запускает функцию смены сцены. Когда объявление закрывается, сцена теперь меняется.

person nix.codes    schedule 14.05.2017