質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2963閲覧

AVAudioPlayerを利用した音楽再生で複数の曲を扱う

takor

総合スコア11

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/18 17:26

編集2017/02/18 17:34

audioPlayer3再生時にplayer3!とplayer1!そしてplayer2!が順番に再生されるようにコードを記述したいと思います。

下記のコードではplayer1!とplayer2!の間にdelayなどがないため、両方同時に再生されてしまいます。

最初にplayer1、次にplayer2が順に再生されるようにするためにどのようにコードを記述する必要がありますか?
AVAudioPlayerの代わりに、AVQueuePlayerを利用することで解決するかと思いますが、AVQueuePlayerの情報などが少なく困っています。

fileprivate var player1:AVAudioPlayer? fileprivate var player2:AVAudioPlayer? fileprivate var player3:AVAudioPlayer? @IBAction func pushButton1(sender: UIButton) { audioPlayer1(url: url1) } @IBAction func pushButton2(sender: UIButton) { audioPlayer2(url: url2) } @IBAction func pushButton3(_ sender: UIButton) { audioPlayer3(url: url1, url2: url2, url3: url3) } func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { if (player === player1) { yourButton1.isSelected = false } else if (player === player2) { yourButton2.isSelected = false } else if (player === player3) { //player1!とplayer2!が同時に再生される yourButton3.isSelected = false player1!.play() yourButton1.isSelected = true player2!.play() yourButton2.isSelected = false } } func audioPlayer1(url: URL) { do { try player1 = AVAudioPlayer(contentsOf:url) player1!.play() yourButton1.isSelected = true player1!.delegate = self } catch { print(error) } } func audioPlayer2(url: URL) { do { try player2 = AVAudioPlayer(contentsOf:url) player2!.play() yourButton2.isSelected = true player2!.delegate = self } catch { print(error) } } func audioPlayer3(url: URL, url2: URL, url3: URL) { do { try player3 = AVAudioPlayer(contentsOf:url3) try player1 = AVAudioPlayer(contentsOf: url1) try player2 = AVAudioPlayer(contentsOf: url2) player3!.play() yourButton3.isSelected = true player3!.delegate = self player1!.delegate = self } catch { print(error) } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

順番に再生したいなら、AVAudioPlayerは1個でよくて、
1つ目の音楽の再生が終了したらaudioPlayerDidFinishPlayingが
呼ばれるので、そのタイミングで続いて2つ目の再生をするように実装したらいいと思います。
(参考)
http://nackpan.net/blog/2015/09/23/ios-swift-avaudioplayer-multiple-items/

投稿2017/02/19 17:56

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問