gpt4 book ai didi

ios - 尝试按一个按钮然后按顺序或随机播放音频

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:25 26 4
gpt4 key购买 nike

我试图按下一个按钮,音频文件一个接一个地播放。

下面是我的代码。我按下播放按钮,两种声音同时播放。我试图按下播放按钮,声音开始和停止,然后另一个声音文件开始和停止。一键按下2个声音文件是我的目标。谢谢

我正在循环尝试此操作,但它不起作用。

import UIKit
import AVFoundation

class ViewController: UIViewController {

@IBOutlet weak var sliderValue: UISlider!

var player:AVAudioPlayer = AVAudioPlayer()
var player1:AVAudioPlayer = AVAudioPlayer()

@IBAction func play(_ sender: AnyObject) {
player.play()
player1.play()
}

@IBAction func pause(_ sender: AnyObject) {
player.pause()
}
@IBAction func stop(_ sender: AnyObject) {
player.stop()
player.currentTime = 0
}
@IBAction func sliderChanged(_ sender: AnyObject) {
player.volume = sliderValue.value
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let audioPath = Bundle.main.path(forResource: "sound1", ofType: "mp3")!
let audioPath1 = Bundle.main.path(forResource: "sound2", ofType: "mp3")!
do {
try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath))
try player1 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath1))

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

最佳答案

当然你不能循环执行!

一个接一个地播放声音文件的正确方法是使用AVAudioPlayerDelegate

在你的 View Controller 中,符合AVAudioPlayerDelegate:

class YourViewController: UIViewController, AVAudioPlayerDelegate {
// ...
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer,
successfully flag: Bool) {

}
}

如您所见,我向 Controller 添加了一个 audioPlayerDidFinishPlaying 方法。

所以你想先玩player,然后再玩player1,对吧?

viewDidLoad中,添加这一行:

player.delegate = self

在我刚刚添加的方法中,写:

player1.play()

其他的 IBAction 方法应该稍微改变一下:

@IBAction func play(_ sender: AnyObject) {
player.play()
}

@IBAction func pause(_ sender: AnyObject) {
if player.isPlaying {
player.pause()
} else if player1.isPlaying {
player1.pause()
}

}
@IBAction func stop(_ sender: AnyObject) {
if player.isPlaying {
player.stop()
} else if player1.isPlaying {
player1.stop()
}
}
@IBAction func sliderChanged(_ sender: AnyObject) {
player.volume = sliderValue.value
player1.volume = sliderValue.value
}

关于ios - 尝试按一个按钮然后按顺序或随机播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com