LoginSignup
2
5

More than 3 years have passed since last update.

【xcode】swift5 BGMを流したまま効果音を鳴らす

Last updated at Posted at 2020-06-01

やりたいこと

BGMを流したまま効果音を再生する

ソースコード

音声のファイル名:bgm.mp3と button.mp3

import UIKit
import AVFoundation

class ViewController: UIViewController {
    var player0:AVAudioPlayer?
    var player1:AVAudioPlayer?

   override func viewDidLoad() {
       super.viewDidLoad()

    // 再生する音声ファイルを指定する
       let url = Bundle.main.bundleURL.appendingPathComponent("bgm.mp3")
       do {
           try player0 = AVAudioPlayer(contentsOf: url)
       } catch {
           print("Error")
       }
       player0!.play()
       //音声をループさせる
       player0!.numberOfLoops = -1}

//ボタンを押したら効果音がなるように設定
@IBAction func playSound(sender: AnyObject) {
         // 再生する音声ファイルを指定する
        let soundURL = Bundle.main.url(forResource: "button", withExtension: "mp3")
         do {
        player1 = try AVAudioPlayer(contentsOf: soundURL!)
             player1?.play()
         } catch {
             print("error...")
         }
     }
}

まとめ

音を同時に再生しようとすると片方の音が止まってしまう問題に約1時間もハマってしまいました。
色々調べた結果【作るAVAudioPlayerのインスタンスの数だけ音楽再生関数を作る必要がある】とのことで上記のようなコードに至りました。
意外とシンプルだった。出来た時めっちゃ嬉しかったです。笑

初心者なので上記のコードがベストなのかはわからないのですがとりあえず動いたから良いと言うことで。笑
より良い同時再生方法があればご教授いただけると嬉しいです。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5