Есть ли способ остановить и воспроизвести звук на узлах в SceneKit? - PullRequest
1 голос
/ 06 февраля 2020

Я играю несколько узлов в SceneKit одновременно, я могу их воспроизвести и остановить их. Есть ли способ сыграть их снова? потому что, чтобы остановить их, я использую

node.removeAllAudioPlayers()

и не могу снова добавить аудиоплеер к узлу.

func setupNode() {

      if filename != "" {
        node = SCNNode()
        node.position = SCNVector3Make(0, 0, -1)
        sphere.addChildNode(node)

        url = URL(string: filename)

        frontNode = SCNAudioSource(url: url!)
        frontNode.volume = self.volume
        frontNode.loops = true
        frontNode.isPositional = true
        frontNode.shouldStream = false
        frontNode.load()

        frontPlayer = SCNAudioPlayer(source: frontNode)
      }
}


override func viewWillAppear(_ animated: Bool) {
     super.viewWillAppear(animated)
     setupPlayers()
}

func setupPlayers(){
     if filename != ""{
         node.addAudioPlayer(frontPlayer)
     }
}

@objc func handleDismiss() {
    NotificationCenter.default.post(name: SceneView.dismiss, object: nil)

    if self.filename != "" {
        self.node.removeAllAudioPlayers()
    }

    self.dismiss(animated: true, completion: nil)
}
...