Xcode 一个按钮随机播放多个声音。敏捷的

Xcode 一个按钮随机播放多个声音。敏捷的,xcode,swift,Xcode,Swift,我需要创建一个按钮,当我按下它时,只播放一个声音。当我再次按下时,我希望播放不同的声音。我有4个声音,我想随机播放。因此,当我按下按钮,比如说8次,我会随机听到8种声音 我将声音文件名放在一个数组中,并实现了arc4random来随机化。我在AVFoundation工作,这就是我被卡住的地方。我不知道怎么玩这个阵法 我知道如何播放1个声音,但不知道如何在按钮中实现这一点。有人知道吗 import UIKit import AVFoundation class ViewController: U

我需要创建一个按钮,当我按下它时,只播放一个声音。当我再次按下时,我希望播放不同的声音。我有4个声音,我想随机播放。因此,当我按下按钮,比如说8次,我会随机听到8种声音

我将声音文件名放在一个数组中,并实现了arc4random来随机化。我在AVFoundation工作,这就是我被卡住的地方。我不知道怎么玩这个阵法

我知道如何播放1个声音,但不知道如何在按钮中实现这一点。有人知道吗

import UIKit
import AVFoundation

class ViewController: UIViewController {

let soundFilenames = ["sound_1.mp3", "sound_2.mp3"]
let randomIndex = Int(arc4random_uniform(UInt32(soundFilenames.count)))
let selectedFilename = soundFilenames[randomIndex]

@IBAction func tap(sender: UIButton) {
   // Audio code?
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

编辑:

@IBAction func tap(sender: UIButton) {

    let soundFilenames = ["Sound1.mp3", "Sound2.mp3"]
    let randomIndex = Int(arc4random_uniform(UInt32(soundFilenames.count)))
    let selectedFilename = soundFilenames[randomIndex]


    let sound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("selectedFilename", ofType: "mp3")!)

    var audioPlayer : AVAudioPlayer?
    audioPlayer = AVAudioPlayer(contentsOfURL: sound, error: nil)
    audioPlayer!.prepareToPlay()
    audioPlayer!.play()

}
编辑2:

var audioPlayer : AVAudioPlayer?

@IBAction func tap(sender: UIButton) {

    let soundFilenames = ["Sound1", "Sound2"]
    let randomIndex = Int(arc4random_uniform(UInt32(soundFilenames.count)))
    let selectedFilename = soundFilenames[randomIndex]


    let sound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("selectedFilename", ofType: "mp3")!)

    audioPlayer = AVAudioPlayer(contentsOfURL: sound, error: nil)
    audioPlayer!.prepareToPlay()
    audioPlayer!.play()

}

如果这是您的复制/粘贴代码,您的let sound声明可以使用校对

let sound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("selectedFilename", ofType: "mp3")!)
不是


您提到您知道如何播放声音,但使用此代码您已经做到了吗?

或者,如果您声称您知道如何播放一个声音,那么问题出在哪里?显示插入
selectedFilename
后播放1个声音的代码。同样,不清楚问题出在哪里。我需要使用AVFoundation AVAudioPlayer来播放正确的声音?我知道轻触按钮后如何播放一种声音。我只是不知道如何实现音频播放器,这样我就可以实际按下按钮并播放这个阵列中的声音。我编辑了我的初始帖子。我只是因为数组而感到困惑。所以,如果你对如何实现这一点有任何想法,我洗耳恭听。这些代码永远不会起作用,因为
audioPlayer
是一个局部变量,因此你的AVAudioPlayer在播放声音之前就消失在一团烟雾中。您需要将其作为类的实例变量。另外,如果您在调用
pathForResource
时要说
“mp3”
,则
“mp3”
也不应出现在您操作的字符串中。我在立即发布它时更改了它,奇怪的是它仍然显示了这一点。谢谢
let sound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("selectedFilemane", ofType: "mp3")!)