- ベストアンサー
フレームを使用せず、BGMのON (LOOP演奏)とOFFを切り替える
フレームを使用せず、Java Scriptで同じページでBGM(mp3)のONとOFFを切り替えるようにしました。 ONとOFFのボタンは自作の画像JPEGで作りました。 現在はONを押した時に、1度しか演奏しません。どうすれば、LOOPで演奏されるようになるのですか?どのようなスクリプトをどこに入れれば良いのでしょうか?どなたか、お分かりになる方教えて下さい。 また、WinでもMacでも動作するのでしょうか? <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> <script language="JavaScript"> <!-- function soundPlay(sndName) { mySND.src = sndName; } //--> </script> <bgsound src="silent.mp3" id="mySND"> </HEAD> <BODY bgcolor="#000000"><A target="_self" href="javaScript:soundPlay('BGMのURL')"><IMG src="ON画像.jpg" width="55" height="27" border="0"></A><BR> <A target="_self" href="javaScript:soundPlay('dummy.mp3')"><IMG src="OFF画像.jpg" width="55" height="27" border="0"></A></BODY> </HTML>
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
色々と気になったので書き直してみました・・・・Opera 9で動作することは確認していますがIE6とFirefox(多分MP3再生用プラグイン入れてないせい)でどうなるか自信がありません。 鳴ります? <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Style-Type" content="text/css;Shift_JIS" /> <meta http-equiv="content-script-type" content="text/javascript" /> <link rel="stylesheet" href="himajin.css" type="text/css" /> <title>MIDI再生実験</title> <!-- 今回の件とはあまり関係ないけどtitle要素の中身はきちんと入れるべき--> <!-- script要素にはtype属性が必須。language属性は非推奨。 Firefox 3.0a1が「MYSNDが宣言されて無い」というエラー吐いたのでjavascriptのソースを変更してみた --> <script type="text/javascript"> function soundPlay(sndName) { var mysound = document.getElementById("MYSND"); mysound.setAttribute("data",sndName); } </script> </head> <body> <h1>MIDI再生実験</h1> <p> <object type="audio/mp3" id="MYSND" declare="declare" > <!-- declare属性がブラウザでサポートされているかは不明 --> <param name="loop" value="true" /> <!-- ループにするために必要な要素--> </object> </p> <ul> <li><img src="on.jpg" width="55" height="27" onclick="soundPlay('himajin.mp3');" alt="himajin.mp3 on"/></li> <li><img src="off.jpg" width="55" height="27" onclick="soundPlay('');" alt="off" /></li> <!-- 空文字列渡しておけばわざわざdummy.mp3にする必要なし。またわざわざa要素にする必要も無くonclick属性で十分。 --> <!-- img要素に指定する画像のファイル名は日本語じゃない方が良いと思う --> </ul> </body> </html>
その他の回答 (4)
>どうすれば、LOOPで演奏されるようになるのですか? <bgsound ....loop="infinite"> //無限繰返し <bgsound ....loop="5"> //5回 >また、WinでもMacでも動作するのでしょうか? 不可。bgsoundはIEの独自拡張仕様 ---- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>???</title> <script type="text/javascript"> <!-- function soundPlay(){ document.all['mySND'].src = 'BGMのURL'; } function soundStop(){ document.all['mySND'].src ='dummy.mp3'; } //--> </script> <bgsound id="mySND" src="silent.mp3" loop="infinite"> </head> <BODY bgcolor="#000000"> <A target="_self" href="#"onclick="soundPlay();return false"> <IMG src="ON画像.jpg" width="55" height="27" border="0"></A><BR> <A target="_self" href="#"onclick="soundStop();return false"> <IMG src="OFF画像.jpg" width="55" height="27" border="0"></A> </body> </html>
お礼
>bgsoundはIEの独自拡張仕様 そうなんですか。 ご回答本当にありがとうございました。 助かりました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#3の >mySND.loop=0; >とすれば、止めることができます。 は、間違いでした、0でも1回演奏するようです。 止めるには mySND.src=""; として下さい
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
BGSOUND を使うことの是非はともかく、 <bgsound src="silent.mp3" id="mySND" loop="-1"> とすれば、ループさせることができます。 スクリプトからは、 mySND.loop=-1; とすれば、ループさせることができ mySND.loop=0; とすれば、止めることができます。 少なくともWinIE では動きますが、他のことはわかりません。 また、#1でも指摘されていますように、 mySND.src のようにIDで直接アクセスするのは望ましくないです。
お礼
本当にありがとうございました。 参考になります。
ごめんなさい、修正です <meta http-equiv="Content-Style-Type" content="text/css;charset=Shift_JIS" /> です。 #何か他に間違いあったらごめんなさい。 #link要素のtype属性とjavascriptのところにcharsetを入れるべきか良く判らんので・・・
お礼
助かりました。IE6では再生されます。 随分お詳しいのですね。スゴイです。 本当にご丁寧にありがとうございました。