我试着环顾这个论坛,但我找不到有关这个具体问题的更多信息。我想要的是按下按钮时动态播放声音。
以下是我目前的情况:
import UIKit
import AVFoundation
class ViewController: UIViewController, AVAudioPlayerDelegate {
var collectionView: UICollectionView?
func callSoundURL(soundFile: String) -> NSURL {
let soundURL: NSURL = NSBundle.mainBundle().URLForResource(soundFile, withExtension: "mp3")!
return soundURL
}
var soundPlayer: AVAudioPlayer = AVAudioPlayer()
func playMySound(soundURL: NSURL) {
do { soundPlayer = try AVAudioPlayer(contentsOfURL: soundURL, fileTypeHint: nil) } catch let error as NSError {
print(error.description)
}
soundPlayer.numberOfLoops = 1
soundPlayer.prepareToPlay()
soundPlayer.play()
}
override func viewDidLoad() {
super.viewDidLoad()
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let row = collectionView.cellForItemAtIndexPath(indexPath)
var fileLabel: String
fileLabel = "beep"
let soundURLMade: NSURL = callSoundURL(fileLabel)
playMySound(soundURLMade)
}
}
有很多代码没有透露,因为它与我现在正在尝试做的事情无关,但如果需要,我可以提供更多代码。
基本上,我有一个集合视图,当用户点击一个单元格时,我希望系统播放声音。每个单元格的文件名将从数组中获取。然而现在的问题是我甚至无法获得静态声音文件。
当按下一个单元格时,fileLabel是一个字符串,它被传递给函数以将其转换为具有文件位置的对象,然后发回,然后进入播放文件。
我得到的错误在(在callSoundURL函数中):
let soundURL: NSURL = NSBundle.mainBundle().URLForResource(soundFile, withExtension: "mp3")!
调试会话期间的错误是bad_instruction
如果有人有任何建议,我将不胜感激,谢谢。