/* HTML5 Audio で音を出す */ /* loop属性をサポートしていないブラウザでも少々間隔を開けてループ再生する */ /* グローバル定数、変数 */ var MYCONST = { // 定数 btn: { // ボタン情報 BGMid: "btnBGMsound", // BGMボタンのid jumpid: "btnJumpsound", // ジャンプボタンのid onText: "音を出す", // 音をオンにするボタンの表示文言 offText: "音を止める" // 音をオフにするボタンの表示文言 }, rdo: { // ラジオボタン情報 divid: "voldiv", // 親divノードid def: "rds" // デフォルトでチェックされるラジオボタンのid } } var BGMAudio = null; // BGMのHTMLAudioElementオブジェクト var jumpAudio = null; // ジャンプ音のHTMLAudioElementオブジェクト var BGMcheckID; // BGMが終了しているかチェック用タイマーID var BGMplaying = false; // 音が出ている時はtrue (function($) { /* 音を出すボタンが押された場合の処理 */ bgmsound = function(){ if(BGMplaying){ // 音を停止する BGMplaying = false; clearTimeout(BGMcheckID); BGMAudio.pause(); $(this).text(MYCONST.btn.onText); }else{ // 音を出す BGMAudio.load(); BGMAudio.play(); $(this).text(MYCONST.btn.offText); BGMplaying = true; // ループを実装していないブラウザ用 if(!$.browser.webkit){ BGMcheckID = setInterval("checkBGM()",5000); } } }; /* BGMが止まっていたら再生する */ checkBGM = function(){ if(BGMplaying && BGMAudio.ended){ BGMAudio.play(); } } /* ジャンプボタンが押された場合の処理 */ jumpsound = function(){ // BGM再生中のみ音を出す if(BGMplaying){ jumpAudio.play(); } } /* ラジオボタンで音量変更された場合の処理 */ volChange = function(){ // チェックされたラジオボタンの値取得 var myid = $("#" + MYCONST.rdo.divid + " > :checked").val(); var volsize = 0.0; // 音量 switch(myid){ case "vol1": volsize = 0.1; break; case "vol2": volsize = 0.3; break; case "vol3": volsize = 0.5; break; case "vol4": volsize = 0.7; break; case "vol5": volsize = 1.0; break; default: break; } BGMAudio.volume = volsize; jumpAudio.volume = volsize; }; /* body onload時の処理 */ $(window).load(function() { try { BGMAudio = new Audio(""); jumpAudio = new Audio(""); if (BGMAudio.canPlayType) { var canPlayOgg = ("" != BGMAudio.canPlayType("audio/ogg")); var canPlayMp3 = ("" != BGMAudio.canPlayType("audio/mpeg")); if(canPlayOgg || canPlayMp3){ BGMAudio.autoplay = false; BGMAudio.volume = 0.3; BGMAudio.loop = true; jumpAudio.autoplay = false; jumpAudio.volume = 0.3; if(canPlayMp3){ BGMAudio.src = "./sound/test.mp3"; jumpAudio.src = "./sound/jump.mp3"; }else{ BGMAudio.src = "./sound/test.ogg"; jumpAudio.src = "./sound/jump.ogg"; } }else{ throw "Ogg and Mp3 are not supported."; } }else{ throw "Audio is not supported."; } } catch(e) { BGMAudio = null; jumpAudio = null; } // audioオブジェクトが使用可能ならボタンにイベント付与 if(BGMAudio){ $("#" + MYCONST.btn.BGMid).click(bgmsound); $("#" + MYCONST.btn.jumpid).click(jumpsound); // ラジオボタンにイベント付与 $("#" + MYCONST.rdo.divid + " > :radio").change(volChange); // ラジオボタンの小をチェックしている状態にする $("#" + MYCONST.rdo.def).attr("checked",true); }else{ $("#" + MYCONST.btn.BGMid).text("音が出ません"); } }); })(jQuery);