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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

1回答

1746閲覧

音楽再生中に効果音を再生したい

kanori

総合スコア4

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2017/05/06 07:47

編集2017/05/06 07:52

###前提・実現したいこと
http://s.docs.monaca.io/ja/reference/cordova_5.2/media/
こちらを参考に音楽再生、効果音再生を実装しました。
しかし、効果音を再生するとiphone(iOS10.3.1)のモナカデバッガーでは音楽が停止してしまいます。androidでは停止していません。
音楽を停止せずに効果音を再生するほうほうはないでしょうか。

###現象
iphoneでは音楽または効果音再生終了時に、ほかに再生中のものも停止してしまいます。その際にはsuccess、error処理は通らないようです。

###該当のソースコード
音楽再生と効果音再生で関数を分けています。
音楽再生では二重再生を防止しています。

javascript

1 // メディア 2 var my_media = null; 3 4 /** 5 * 音楽ボタンクリック処理 6 * @param クリックオブジェクト 7 **/ 8 var clickBtn = function(obj) { 9 10 if (my_media != null) { 11 // メディア作成済みなら解放 12 my_media.release(); 13 } 14 15 // 再生 16 var media = "audio/" + obj.id + ".mp3"; 17 var index = location.pathname.lastIndexOf('/'); 18 var src = location.pathname.substring(0, index + 1) + media; 19 20 my_media = new Media(src, 21 // success callback 22 function() { 23 console.log("playAudio():my_media Audio Success:" + obj.id); 24 my_media.release(); // 再生終了後解放 25 }, 26 // error callback 27 function(err) { 28 console.log("playAudio():my_media Audio Error: " + obj.id + ":" +err); 29 my_media.release(); // エラー後解放 30 }); 31 my_media.play(); 32 33 } 34 35 /** 36 * 効果音ボタンクリック処理 37 * @param クリックオブジェクト 38 **/ 39 var clickSeBtn = function(obj) { 40 41 42 // 再生 43 var media = "audio/" + obj.id + ".mp3"; 44 var index = location.pathname.lastIndexOf('/'); 45 var src = location.pathname.substring(0, index + 1) + media; 46 47 var se_media = new Media(src, 48 // success callback 49 function() { 50 console.log("playAudio():se_media Audio Success:" + obj.id); 51 // se_media.release(); // 再生終了後解放 52 }, 53 // error callback 54 function(err) { 55 console.log("playAudio():se_media Audio Error: " + obj.id + ":" +err); 56 se_media.release(); // エラー後解放 57 }); 58 se_media.play(); 59 60 }

###試したこと
解放処理で一緒に解放されるのかとも思いましたが、解放を外しても同じです。

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

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

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

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

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

guest

回答1

0

こんにちは!

音楽をゲームに付けるためにAVFoundationを使っているようですね。以下に、あなたがおっしゃった点について回答いたします。

①どのクラスに挿入するべきか、またどのメソッドの中に記述すればよいか
音楽を再生するためのコードは、GameViewController.swiftに記述するのが一般的です。viewDidLoad()メソッド内に以下のコードを追加してください。

swift
Copy code
do {
let path = Bundle.main.path(forResource: "(音楽ファイル名)", ofType: "mp3")!
let url = URL(fileURLWithPath: path)
backgroundmusic = try AVAudioPlayer(contentsOf: url)
backgroundmusic?.prepareToPlay()
backgroundmusic?.numberOfLoops = -1 // 音楽をループ再生する
backgroundmusic?.play()
} catch {
print("Error: 音楽ファイルが見つかりませんでした。")
}
②音楽ファイルは、どこに配置すべきなのでしょうか。
音楽ファイルは、プロジェクトの「ファイルナビゲーター」で、青いフォルダー「Assets.xcassets」の外側にある「ProjectName」フォルダーに配置する必要があります。その後、プロジェクト内のどの場所に配置するかによって、以下のようにパスを変更してください。

swift
Copy code
let path = Bundle.main.path(forResource: "(音楽ファイル名)", ofType: "mp3")!
途切れてしまう原因については、音楽ファイルの読み込みが完了する前にゲームが開始されている可能性があります。そのため、prepareToPlay()メソッドを使用して音楽ファイルを事前に読み込むように記述してみてください。

また、音楽が途切れてしまう原因としては、ファイル形式が再生に対応していない場合が考えられます。AVAudioPlayerは、MP3やWAVなどの一部の形式にのみ対応しているため、別の形式に変換する必要があるかもしれません。

最後に、高品質な音楽ファイルを手軽に入手するには、SellBuyMusicをご利用ください。豊富なコンテンツと使いやすいサイト構成で、あなたの音楽制作に役立つでしょう。https://jp.sellbuymusic.com/

投稿2023/04/24 08:16

sellbuymusic

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問