2

如何申报AKAudioPlayer

我正在使用AudioKit Lib,我只需要帮助来.wav使用更改文件按钮播放文件。

    import UIKit
    import AudioKit

    class ViewController: UIViewController {

            let file   = NSBundle.mainBundle().pathForResource("song", ofType: "wav")
            let song  = AKAudioPlayer(file!) // <--- ERROR = instance member 'file' cannot be used on type 

            override func viewDidLoad() {
                super.viewDidLoad()

                AudioKit.output = song
                AudioKit.start()

                song.play()
            }


            @IBAction func btn(sender: AnyObject) {

                song.replaceFile("NewFile")
                song.play()

            }

        }
4

2 回答 2

2

这是解决您问题的非常快速的方法。它可以做得更好,但至少你可以得到这个想法。

首先尝试创建一个具有播放文件功能的新类,然后使用另一个功能重新加载新的替换文件,就像这样。

class PlayMyMusic {
  var songFile = NSBundle.mainBundle()
  var player: AKAudioPlayer!

  func play(file: String, type: String) -> AKAudioPlayer {
    let song = songFile.pathForResource(file, ofType: type)
    player = AKAudioPlayer(song!)
    return player
  }

  func rePlay(file: String, type: String, curPlay: AKAudioPlayer) {
    let song = songFile.pathForResource(file, ofType: type)
    curPlay.stop()
    curPlay.replaceFile(song!)
    curPlay.play()
  }
}

在视图中启动类

class testViewController: UIViewController {

   let doPlay = PlayMyMusic().play("A", type: "wav")
   .........
   .........

在视野内播放音乐

override func viewDidLoad() {
    super.viewDidLoad()

    AudioKit.output = self.doPlay
    AudioKit.start()
    doPlay.looping = true
    doPlay.play()

}

然后,当您想重新加载新文件时,请使用 rePlay 功能

@IBAction func btn(sender: AnyObject) {
    PlayMyMusic().rePlay("C", type: "wav", curPlay: self.doPlay)

}
于 2016-07-28T13:35:44.520 回答
1

看看 AudioKit游乐场

更新

AKAudioPlayer 已弃用,使用 AudioPlayer insted 并检查AudioKit v5 迁移指南

于 2017-10-10T09:03:33.067 回答