I am using a SKAudioNode()
to play background music in my game. I have a play/pause function and everything is working fine until I plug in my headphones. There is no sound at all and when I call the pause/play function I get this error
AVAudioPlayerNode.mm:333: Start: required condition is false: _engine->IsRunning() com.apple.coreaudio.avfaudio', reason: 'required condition is false: _engine->IsRunning()
Does anyone knows what this means?
Code:
import SpriteKit class GameScene: SKScene { let loop = SKAudioNode(fileNamed: "gameloop.mp3") let play = SKAction.play() let pause = SKAction.pause() var isPlaying = Bool() override func didMoveToView(view: SKView) { loop.runAction(play) isPlaying = true self.addChild(loop) } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { _ = touches.first as UITouch! for _ in touches { if isPlaying { loop.runAction(pause) isPlaying = false } else { loop.runAction(play) isPlaying = true } } } }
1 Answers
Answers 1
I was not able fix it, but by using AVAudioPlayer()
I found a good workaround. Thank you all for supporting me!
import SpriteKit import AVFoundation class GameScene: SKScene { var audioPlayer = AVAudioPlayer() override func didMoveToView(view: SKView) { initAudioPlayer("gameloop.mp3") } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { _ = touches.first as UITouch! for _ in touches { toggleBackgroundMusic() } } func initAudioPlayer(filename: String) { let url = NSBundle.mainBundle().URLForResource(filename, withExtension: nil) guard let newURL = url else { print("Could not find file: \(filename)") return } do { audioPlayer = try AVAudioPlayer(contentsOfURL: newURL) audioPlayer.numberOfLoops = -1 audioPlayer.prepareToPlay() audioPlayer.play() } catch let error as NSError { print(error.description) } } func toggleBackgroundMusic() { if audioPlayer.playing { audioPlayer.pause() } else { audioPlayer.play() } } }
0 comments:
Post a Comment