2015-03-31 85 views
1

爲什麼下面的代碼不能播放聲音?它爲play()返回「true」,但我什麼也聽不到。AVAudioPlayer.play()不播放聲音

let path = "/Users/account/Music/sound.mp3"; 
    let fileURL = NSURL(fileURLWithPath: path) 
    var Player = AVAudioPlayer(contentsOfURL:fileURL, error:nil); 

    Player.delegate = self; 
    Player.prepareToPlay(); 
    Player.volume = 1.0; 
    var res = Player.play(); 
    println(res); 

如果我改用下面的代碼,我可以聽到聲音。

var inFileURL:CFURL = fileURL!; 
    var mySound = UnsafeMutablePointer<SystemSoundID>.alloc(sizeof(SystemSoundID)); 
    AudioServicesCreateSystemSoundID(inFileURL, mySound); 
    AudioServicesPlaySystemSound(mySound.memory) 
  • OS X約塞米蒂10.10.3
  • 的Xcode 6.2

回答

1

的問題是,Player,你AVAudioPlayer,是局部變量。所以它就會立即失效 - 甚至可以開始播放,更不用說完成播放了。

解決方法:使它成爲屬性而不是持續

+0

而且,對於本地(自動)變量和屬性之間的關鍵生命期差異,請參閱我的書:http://www.apeth.com/swiftBook/ch03.html#_variable_scope_and_lifetime – matt 2015-03-31 22:32:32

+0

我添加了var Player:AVAudioPlayer = AVAudioPlayer();功能外,然後它的工作。 – 2015-04-01 02:34:58