わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。

Audioタグによる音声再生

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>






わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。