久しぶりの投稿となります。
MVCとかMVVMとかアーキテクチャはあいも変わらず理解には至っていませんが、少しずつ再利用性のあるプログラムが組めるようになれればなぁと日々邁進しております。
今回は、音楽や効果音(mp3ファイル)を好きな回数ほど重複させて再生させる方法について尾行6...備考録がてらまとめます。
以前まで、ViewController.swiftに全ての処理を突っ込むゴミのようなフラットなコードを書いていましたが、保守性のへったくれもあったもんじゃないので今回は初めて別々のクラスに処理を分けて音楽を再生してみました。
今回、K N@ninoko1995氏の記事 を参考にさせていただきました。この場を借りて御礼申し上げます。
ViewController.swift
import UIKit
import AVFoundation
class ViewController: UIViewController,AVAudioPlayerDelegate{
// BGMと効果音を判別しやすいようにmusiとsoundで分けています。
var music1 = MusicController()
var sound1 = MusicController()
var sound2 = MusicController()
override func viewDidLoad() {
super.viewDidLoad()
/* 音楽を再生したい箇所に下記を読み込ませたら再生されます。 */
/* music1.musicPlay(mode: 再生回数,fileName: "音楽ファイル名") */
music1.musicPlay(mode: -1,fileName: "Tutorial")
sound1.musicPlay(mode: 5,fileName: "button")
sound2.musicPlay(mode: 15,fileName: "button2")
/* 音楽を止めたいときは止めたいときに下記を読み込ませたら止まります。
music1.musicPlay(mode: -1,fileName: "STOP")
sound1.musicPlay(mode: 5,fileName: "STOP")
sound2.musicPlay(mode: 15,fileName: "STOP")
*/
}
MusicController.swift
import AVFoundation
class MusicController{
var musicPlayer: AVAudioPlayer!
var mode : Int = 0
var fileName : String = ""
// 指定のMUSICを指定の回数再生させるメソッド //
func musicPlay(mode: Int,fileName: String){
if fileName == "STOP"{
musicPlayer.stop()
return
}
do {
let filePath = Bundle.main.path(forResource: fileName,ofType: "mp3")
let musicPath = URL(fileURLWithPath: filePath!)
musicPlayer = try AVAudioPlayer(contentsOf: musicPath)
} catch {
print("error")
}
musicPlayer.numberOfLoops = mode
musicPlayer.play()
}
}
現職のエンジニアの方の大多数が理解しているので余計かもしれませんが、学生や趣味でやってる方向けに。ViewController.swiftの方で再生回数を指定できますが、−1にすることで永久的に再生されます。
お読みいただきましてありがとうございました。