MainStoryBoard上にタップするとオーディオを再生し、再生中のbackground colorが変更されるUIButtonを2つ設置しています。yourButton、yourButton2になります。
MainStoryBoard上に新たにyourButton、yourButton2のオーディオを順番に再生するyourButton3を設置したのですが、以下のコードで試してみると
else if文の三番目のaudioPlayerdidFinishPlayingが呼ばれません。
let url1 = Bundle.main.bundleURL.appendingPathComponent("music1.mp3") let url2 = Bundle.main.bundleURL.appendingPathComponent("music2.mp3") @IBOutlet weak var yourButton: customButton! @IBOutlet weak var yourButton2: customButton! @IBOutlet weak var yourButton3: customButton! fileprivate var player1:AVAudioPlayer? fileprivate var player2:AVAudioPlayer? fileprivate var player3:AVAudioPlayer? @IBAction func pushButton1(sender: UIButton) { Player(url: url1) } @IBAction func pushButton2(sender: UIButton) { Player1(url: url2) } @IBAction func pushButton3(_ sender: UIButton) { Player(url: url2) player1!.play() } func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { if (player === player1) { yourButton.isSelected = false } else if (player === player2) { yourButton2.isSelected = false } else if (player === player3) { yourButton.isSelected = false player2!.play() yourButton2.isSelected = false } } func Player(url: URL) { do { try player1 = AVAudioPlayer(contentsOf:url) player1!.play() yourButton.isSelected = true player1!.delegate = self } catch { print(error) } } func Player1(url: URL) { do { try player2 = AVAudioPlayer(contentsOf:url) player2!.play() yourButton2.isSelected = true player2!.delegate = self } catch { print(error) } } func Player3(url: URL, url2: URL) { do { try player1 = AVAudioPlayer(contentsOf:url) try player2 = AVAudioPlayer(contentsOf: url2) player1!.play() yourButton.isSelected = true player1!.delegate = self } catch { print(error) } }
以下の文で解決しました!
func
1 if (player === player1) { 2 yourButton.isSelected = false 3 } else if (player === player2) { 4 yourButton2.isSelected = false 5 } 6} 7コード
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。