/* 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);