对 Swift 很陌生,所以请原谅我的问题太天真了。
我构建了一个非常简单的应用程序,其中包含 3 个按钮,每个按钮播放不同的声音。它工作正常,但代码效率不高,因为我为每个要播放的声音创建了一个播放器,所以我想知道如何只使用播放器的一个实例来播放所有声音。这是我的代码:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player1 = AVAudioPlayer()
var player2 = AVAudioPlayer()
var player3 = AVAudioPlayer()
@IBAction func playU3(_ sender: Any) {
player3.play()
}
@IBAction func playU2(_ sender: Any) {
player2.play()
}
@IBAction func playU1(_ sender: Any) {
player1.play()
}
override func viewDidLoad() {
super.viewDidLoad()
let audioPath3 = Bundle.main.path(forResource: "sound-3", ofType: "mp3")
let audioPath2 = Bundle.main.path(forResource: "sound-2", ofType: "mp3")
let audioPath1 = Bundle.main.path(forResource: "sound-1", ofType: "mp3")
do {
try player3 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath3!))
try player2 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath2!))
try player1 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath1!))
} catch {
print(error)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
提前致谢
请检查一下:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player : AVAudioPlayer!
@IBAction func playU3(_ sender: Any) {
let audioPath = Bundle.main.path(forResource: "sound-3", ofType: "mp3")
do {
try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
player.play()
} catch {
print(error)
}
}
@IBAction func playU2(_ sender: Any) {
let audioPath = Bundle.main.path(forResource: "sound-2", ofType: "mp3")
do {
try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
player.play()
} catch {
print(error)
}
}
@IBAction func playU1(_ sender: Any) {
let audioPath = Bundle.main.path(forResource: "sound-1", ofType: "mp3")
do {
try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
player.play()
} catch {
print(error)
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
关于ios - Swift 3 多个 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464417/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |