Ios 创建一个随机音频声音发生器

Ios 创建一个随机音频声音发生器,ios,swift,audio,random,Ios,Swift,Audio,Random,谢谢你的回复 我正试图制作一个程序,当我按下一次按钮时,两个随机的声音将播放。我可以让随机声音播放,如果我按下按钮,但我看,如果我按下按钮,随机声音将发挥不同的每一次 import UIKit import AVFoundation class ViewController: UIViewController { var player: AVAudioPlayer = AVAudioPlayer() var sounds = ["sound1", "sound2", "so

谢谢你的回复

我正试图制作一个程序,当我按下一次按钮时,两个随机的声音将播放。我可以让随机声音播放,如果我按下按钮,但我看,如果我按下按钮,随机声音将发挥不同的每一次

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player: AVAudioPlayer = AVAudioPlayer()

    var sounds = ["sound1", "sound2", "sound3"]

    override func viewDidLoad() {
        super.viewDidLoad()  

    }

    override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
        if event!.subtype == UIEventSubtype.motionShake {


            let randomNumber = Int(arc4random_uniform(UInt32(sounds.count)))
            let fileLocation = Bundle.main.path(forResource: sounds[randomNumber], ofType: "mp3")
            var error: NSError? = nil
            do { try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: fileLocation!))
            player.play()
            } catch {}           
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
我可以将这些声音粘贴在一起,按照我想要的顺序来听,但我希望swift生成这些声音

我想到了AVqueplayer,使其成为一个播放列表。我在想,这可以像一个比喻中的一对骰子。例如,如果我掷骰子,随机的声音就会出现

我还是一个新手,我试着自己解决这个问题,因为它看起来很简单,但我现在没有选择了

这是我到目前为止得到的。当我每次按下按钮时,这将播放随机声音

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player: AVAudioPlayer = AVAudioPlayer()

    var sounds = ["sound1", "sound2", "sound3"]

    override func viewDidLoad() {
        super.viewDidLoad()  

    }

    override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
        if event!.subtype == UIEventSubtype.motionShake {


            let randomNumber = Int(arc4random_uniform(UInt32(sounds.count)))
            let fileLocation = Bundle.main.path(forResource: sounds[randomNumber], ofType: "mp3")
            var error: NSError? = nil
            do { try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: fileLocation!))
            player.play()
            } catch {}           
        }
    }

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

使用相同的代码,并添加第二个具有匹配文件位置的随机数,将允许声音背靠背播放,两者都是随机的:

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player: AVAudioPlayer = AVAudioPlayer()

    var sounds = ["sound1", "sound2", "sound3"]

    override func viewDidLoad() {
        super.viewDidLoad()  

    }

    override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
        if event!.subtype == UIEventSubtype.motionShake {


            let randomNumber1 = Int(arc4random_uniform(UInt32(sounds.count)))
            let randomNumber2 = Int(arc4random_uniform(UInt32(sounds.count)))
            let fileLocation1 = Bundle.main.path(forResource: sounds[randomNumber1], ofType: "mp3")
            let fileLocation2 = Bundle.main.path(forResource: sounds[randomNumber2], ofType: "mp3")
            //var error: NSError? = nil
            do {
                try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: fileLocation1!))
                player.play()
                try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: fileLocation2!))
                player.play()
            } catch {}           
        }
    }

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

使用相同的代码,并添加第二个具有匹配文件位置的随机数,将允许声音背靠背播放,两者都是随机的:

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player: AVAudioPlayer = AVAudioPlayer()

    var sounds = ["sound1", "sound2", "sound3"]

    override func viewDidLoad() {
        super.viewDidLoad()  

    }

    override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
        if event!.subtype == UIEventSubtype.motionShake {


            let randomNumber1 = Int(arc4random_uniform(UInt32(sounds.count)))
            let randomNumber2 = Int(arc4random_uniform(UInt32(sounds.count)))
            let fileLocation1 = Bundle.main.path(forResource: sounds[randomNumber1], ofType: "mp3")
            let fileLocation2 = Bundle.main.path(forResource: sounds[randomNumber2], ofType: "mp3")
            //var error: NSError? = nil
            do {
                try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: fileLocation1!))
                player.play()
                try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: fileLocation2!))
                player.play()
            } catch {}           
        }
    }

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