gpt4 book ai didi

ios - 如何在 SpriteKit 中播放和暂停音乐

转载 作者:行者123 更新时间:2023-11-28 09:27:28 25 4
gpt4 key购买 nike

我的游戏中有背景音乐。我试图制作一种播放和暂停音乐的方法。

当我按下播放/暂停音乐按钮时,我的应用程序崩溃了。

我不明白为什么它不起作用。

主场景中的方法:(已编辑)

var SoundOnOff = SKSpriteNode(imageNamed: "MusicOn.png")

if (SoundOnOff.containsPoint(location)) {


if BackgroundMusic.sharedHelper.isMuted() {
//BackgroundMusic.sharedHelper.mute()
BackgroundMusic.sharedHelper.pause()
self.SoundOnOff.texture = SKTexture(imageNamed:"MusicOff.png")
print("Music Off!")
}
else {
//BackgroundMusic.sharedHelper.unmute()
BackgroundMusic.sharedHelper.resume()
self.SoundOnOff.texture = SKTexture(imageNamed:"MusicOn.png")
print("Music On!")
}
}

BackgroundMusic 类(已编辑)

import AVFoundation

class BackgroundMusic: NSObject {


internal let localDefaults = NSUserDefaults.standardUserDefaults()
static let sharedHelper = BackgroundMusic()
var BgMusic: AVAudioPlayer?

/// Keys
internal struct Key {
static let muted = "MusicMuteState"
}


override init() {
super.init()
print("Music helper init")
playBackgroundMusic()

if isMuted() {
mute()
}
}

func playBackgroundMusic() {
let aSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Secrets of the Schoolyard", ofType: "mp3")!)
do {
BgMusic = try AVAudioPlayer(contentsOfURL:aSound)
BgMusic!.numberOfLoops = -1
BgMusic!.prepareToPlay()
BgMusic!.play()
} catch {
print("Cannot play the file")
}
}

func mute() {
BgMusic!.volume = 0
localDefaults.setBool(true, forKey: Key.muted)
}

/// Unmute
func unmute() {
BgMusic!.volume = 1
localDefaults.setBool(false, forKey: Key.muted)
}

// Check mute state
func isMuted() -> Bool {
if localDefaults.boolForKey(Key.muted) {
return true
} else {
return false
}
}
}

最佳答案

您的类是 AVAudioPlayer 的子类,但您实际上并没有使用自己的实例来播放音乐。当您使用 BackgroundMusic.sharedHelper.playing 时,您引用的是您的类的一个实例,而不是实际播放的 BgMusic 播放器。由于您的类(class)尚未使用任何声音文件进行初始化,因此我认为它无法正确处理 .playing

关于ios - 如何在 SpriteKit 中播放和暂停音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34745643/

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