HTML5のAudioタグで音声再生を行います。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> <title>Audioタグによる音声再生</title> <script type="text/javascript"> var canvasWidth; var canvasHeight; var context; // イメージ01 var img01 = new Image(); img01.src = "./img/icon.png"; // イメージ02 var img02 = new Image(); img02.src = "./img/hidekiti.png"; // イメージ番号 var imgNum = 0; /* タイマー */ function OnTimer() { var posX = Math.random() * canvasWidth; var posY = Math.random() * canvasHeight; var imgNum = 1 + parseInt(Math.random() * 28 + 0.5); // 拡大率 var zoom = 1 + Math.random() * 2; var imgX = parseInt(imgNum % 10) * 16; var imgY = parseInt(imgNum / 10) * 16 + 16; var imgW = 16; var imgH = 16; var img = img01; var imgDrawW = imgW * zoom; var imgDrawH = imgH * zoom; var imgPosX = posX - imgDrawW / 2; var imgPosY = posY - imgDrawH / 2; // イメージの描画 context.drawImage( img , imgX // 画像上の描画開始位置X , imgY // 画像上の描画開始位置Y , imgW // 描画する画像の幅 , imgH // 描画する画像の高さ , imgPosX // 描画位置X , imgPosY // 描画位置Y , imgDrawW // 描画幅 , imgDrawH // 描画高さ ); } /* ページロード完了 */ function OnLoad() { // キャンバス取得 var canvas = document.getElementById("canvas"); // オーディオ取得 var audio = document.getElementById("audio"); audio.load(); // ループ再生 audio.addEventListener('ended', function () { audio.play() }, false); // キャンバスの幅と高さを取得 canvasWidth = canvas.getAttribute("width"); canvasHeight = canvas.getAttribute("height"); console.log("width = " + canvasWidth); console.log("height = " + canvasHeight); // キャンバスへ描画 context = canvas.getContext('2d'); context.fillStyle = 'white'; context.fillRect(0, 0, canvasWidth, canvasHeight); // 中心 var centerX = canvasWidth / 2; var centerY = canvasHeight / 2; // タイマー開始 var timer1 = setInterval("OnTimer()", 1000); // マウスイベントを受け取る canvas.addEventListener( "mousedown", function (e) { var posX; var posY; /* FireFoxの場合は、offsetXとoffsetYがundefinedになる */ posX = (e.offsetX !== undefined) ? e.offsetX : (e.layerX - e.target.offsetLeft); posY = (e.offsetY !== undefined) ? e.offsetY : (e.layerY - e.target.offsetTop); console.log("x = " + posX); console.log("y = " + posY); // 音声再生 audio.currentTime = 0; audio.play(); }); // iPhoneではこちらでないと再生できない var btnPlay = document.getElementById("btnPlay"); btnPlay.addEventListener("touchstart", function () { audio.load(); }); } </script> </head> <body bgcolor="#c0c0ff" onload="OnLoad()"> <h1>Audioタグによる音声再生</h1> <canvas width="300" height="200" id="canvas" style="background-color:black;"></canvas> <br /> <input id="btnPlay" value="音楽のロード" type="button"> <br /> タップすると音楽を先頭位置から再生します。(audioタグ) <br /> <audio id="audio" src="./bgm/03.mp3" controls></audio> <br /> <h3>利用させていただいた音楽</h3> <p> <a href='http://www.falcom.co.jp/music_use/'>「FOUNTAIN OF LOVE/Ys Super Collection/Copyrightc Nihon Falcom Corporation」</a><br /> </p> <a href="../html5_list.html">戻る</a> </body> </html>