SKAudioNode проблема после закрытия приложения, перезагрузите, это ошибка? - PullRequest
1 голос
/ 01 мая 2020

У меня проблема со SKAudioNode. Игра заканчивается кнопкой «Домой». Будет воспроизведен аудиофайл.

Когда я вернусь, аудиофайл продолжит воспроизводиться.

Я хочу остановить его.

Я пробовал много вещей, но без успех.

self.AudioNodeSet.removeFromParent() // не работает

self.AudioNodeSet.run(SKAction.stop()) // тоже не работает

Кто-нибудь может мне помочь?

class GameScene: SKScene {  
 var AudioNodeSet = SKAudioNode()  
     override func didMove(to view: SKView) {  
     self.addChild(AudioNodeSet) // Audio Node  
        AudioNodeSet.name = "AudioNodeSet"  
......  

func applicationWillResignActive(_ application: UIApplication) {  
        let imageView = UIImageView(frame: self.window!.bounds)  
        imageView.tag = 101  
        imageView.backgroundColor = UIColor.white  
        //imageView.contentMode = .center  
        imageView.contentMode = .scaleAspectFill  
        let pic = UIImage(named: "Start Page.jpg") // Overwrite Return Scene  
        imageView.image = pic  
        UIApplication.shared.keyWindow?.subviews.last?.addSubview(imageView)  
    }  

........  

override func didMove(to view: SKView) {  

        scene?.size = CGSize(width: 1920, height: 1080)  
        scene?.backgroundColor = .black   
        scene?.scaleMode = .aspectFill   

        let notificationCenter = NotificationCenter.default  
        notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: UIApplication.willResignActiveNotification, object: nil)  
        notificationCenter.addObserver(self, selector: #selector(appMovedToForeground), name: UIApplication.didBecomeActiveNotification, object: nil)  
        notificationCenter.addObserver(self, selector: #selector(appWillTerminate), name: UIApplication.willTerminateNotification, object: nil)  

.........  

@objc func appMovedToForeground() {  

        print("applicationWillResignActive -> appMovedToForeground")  
        self.AudioNodeSet.run(SKAction.stop()) // not work!  
        self.AudioNodeSet.removeFromParent() // second try -> not work!  

Этот код выполняется, когда игра продолжается.

Затем можно прослушать оставшуюся часть аудиофайла.

...