我該如何捕捉瞬間SKScene變爲暫停或audioEngine停止了?我有兩個SKScenes:GameScene和EndScene,我在遊戲中使用GameScene的audioEngine屬性(此屬性包含AVAudioEngine對象)播放聲音。當比賽結束時,從GameScene場景變化EndScene:我該如何捕捉瞬間SKScene變成暫停或audioEngine停止了?
self.view?.presentScene(EndScene())
在此之後,當用戶觸摸«重啓»,比賽重新開始,場景變化從EndScene回GameScene:
self.view?.presentScene(GameScene(), transition: SKTransition.crossFadeWithDuration(1.0))
當場景從EndScene變爲GameScene時,GameScene暫停了一秒(因爲參數值爲SKTransition.crossFadeWithDuration(1.0))。由於GameScene暫停,audioEngine也停止了。此後,GameScene會自動啓動,但audioEngine不會啓動並停止。然後,遊戲在第一次嘗試播放聲音時崩潰,這很明顯:因爲audioEngine已停止。 爲了避免這種情況,我需要在audioEngine停止後啓動它,但是有一個問題需要解決:GameScene的didMoveToView()中試圖捕獲它,但GameScene沒有暫停,它暫停了之後,didMoveToView()已經完成。 這是我的問題: 我該如何捕捉瞬間SKScene變成暫停或audioEngine停止了?有沒有適合這種情況的通知或事件處理程序,也許?
在問我的問題之前,我想過使用update()事件來捕捉這個,但在我看來這是相當粗糙的方式。使用do-while的方式(在didMoveToView結尾,正如我的建議你的意思)看起來更有效率,謝謝你的建議。但是,最後,我決定在聲音播放之前每次檢查audioEngine狀態,在功能播放聲音。我認爲這種方法合理高效。我已經發布它作爲下面我自己的問題的答案。 –
好的。它取決於你,因爲有很多方法可以做到這一點。 – Nik