Swift - 动态声音按钮系统

时间:2016-01-14 21:56:58

标签: swift avfoundation

我试着环顾这个论坛,但我找不到有关这个具体问题的更多信息。我想要的是按下按钮时动态播放声音。

以下是我目前的情况:

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

如果有人有任何建议,我将不胜感激,谢谢。

0 个答案:

没有答案