斯威夫特是个新手,所以请原谅我的问题太天真了。
我已经建立了一个非常简单的应用程序,有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.
}
}提前感谢
发布于 2017-01-04 13:03:48
请您检查一下这个:
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.
}
}发布于 2017-01-04 13:26:22
尝尝这个!
import UIKit
import AVFoundation
class ViewControllerDup: UIViewController {
var audioPlayerArray = [AVAudioPlayer]()
@IBAction func playU3(_ sender: Any) {
playSound("sound-3.mp3")
}
@IBAction func playU2(_ sender: Any) {
playSound("sound-2.mp3")
}
@IBAction func playU1(_ sender: Any) {
playSound("sound-1.mp3")
}
override func viewDidLoad() {
super.viewDidLoad()
}
func playSound(_ soundName: String)
{
var audioPlayer = AVAudioPlayer()
let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: soundName, ofType: nil)!)
do{
audioPlayer = try AVAudioPlayer(contentsOf: alertSound )
audioPlayerArray.append(audioPlayer)
audioPlayer.prepareToPlay()
audioPlayer.play()
}
catch{
print("error")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}https://stackoverflow.com/questions/41464417
复制相似问题