【问题标题】:Swifty Sounds not playing wav fileSwifty Sounds 不播放 wav 文件
【发布时间】:2023-03-14 20:00:01
【问题描述】:

我正在使用 Swifty Sounds 可可豆荚,但无法播放声音。这是我调用来播放声音的函数:

    func playSound() {
//        Sound.play(file: "ding.wav")
        
        duckVolume()
        guard let fileUrl = Bundle.main.path(forResource: "ding", ofType: "wav") else {
            print("cannot find file")
            return
        }
        guard let sound = Sound(url: URL(fileURLWithPath: fileUrl)) else {
            print("cant play sound")
            return
        }
        print("playing sound")
        
        Sound.enabled = true
        Sound.category = .playAndRecord
        sound.play()
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
            self.UnduckVolume()
        }
    }

控制台打印“正在播放声音”,这表明它正在找到正确的文件,但没有播放声音。有趣的是,被注释掉的函数的第一行播放声音没有问题。但是,使用该功能使我无法控制音量,因此我无法使用它。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你在这一行有可选的sound?.play()。确保 optional 不为零,例如guard let sound = sound else { print("no sound") }; sound.play()
  • 感谢 Kiril 的回复,我已经更新了原始问题,确保声音对象不为零。但是,我得到了相同的结果,打印了“正在播放的声音”,但没有播放任何声音。

标签: swift audio swift5


【解决方案1】:

您需要在调用函数之外声明Sound(我不知道为什么会这样,请帮助我处理您的 cmets)。以下代码应该可以工作:

class AnyClass {
    private dogSound : Sound? // declare here
    private catSound : Sound? // declare here

    private func getUrlFromFileName(fileName: String) -> URL {
        let path = Bundle.main.path(forResource: fileName, ofType:nil)!
        return URL(fileURLWithPath: path)
    }
    
    func playDogSound() {
        dogSound = Sound(url: getUrlFromFileName(fileName: "dog.mp3"))
        dogSound?.play()
    }

    func playCatSound() {
        catSound = Sound(url: getUrlFromFileName(fileName: "cat.mp3"))
        catSound?.play()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多