gpt4 book ai didi

swift - 插入/拔出耳机时 SKAudioNode() 崩溃

转载 作者:IT王子 更新时间:2023-10-29 05:27:40 27 4
gpt4 key购买 nike

我正在使用 SKAudioNode() 在我的游戏中播放背景音乐。我有一个播放/暂停功能,在我插入耳机之前一切正常。根本没有声音,当我调用暂停/播放功能时出现此错误

AVAudioPlayerNode.mm:333: Start: required condition is false: _engine->IsRunning() com.apple.coreaudio.avfaudio', reason: 'required condition is false: _engine->IsRunning()

有人知道这是什么意思吗?

代码:

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
}
}
}
}

最佳答案

我无法修复它,但通过使用 AVAudioPlayer() 我找到了一个很好的解决方法。谢谢大家对我的支持!

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()
}
}
}

关于swift - 插入/拔出耳机时 SKAudioNode() 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35662139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com