ソースコードは以下のようになった。
まずはHTML側。
スタートとストップボタンを表示。それぞれのボタンにonclickプロパティでstartTimer、stopTimer関数をセット。
canvasを囲うようにdivのwrapperをつけてcanvasのサイズを調整。dice1-1~dice6-4までの画像はdisplay:noneにしておく。
<button onclick="startTimer()">スタート</button> <button onclick="stopTimer()">ストップ</button> <div id="wrapper"> <canvas id="aaa"></canvas> <img id="dice1-1" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice1-1.png" style="display:none;"> <img id="dice1-2" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice1-2.png" style="display:none;"> <img id="dice1-3" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice1-3.png" style="display:none;"> <img id="dice1-4" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice1-4.png" style="display:none;"> <img id="dice2-1" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice2-1.png" style="display:none;"> <img id="dice2-2" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice2-2.png" style="display:none;"> <img id="dice2-3" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice2-3.png" style="display:none;"> <img id="dice2-4" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice2-4.png" style="display:none;"> <img id="dice3-1" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice3-1.png" style="display:none;"> <img id="dice3-2" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice3-2.png" style="display:none;"> <img id="dice3-3" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice3-3.png" style="display:none;"> <img id="dice3-4" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice3-4.png" style="display:none;"> <img id="dice4-1" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice4-1.png" style="display:none;"> <img id="dice4-2" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice4-2.png" style="display:none;"> <img id="dice4-3" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice4-3.png" style="display:none;"> <img id="dice4-4" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice4-4.png" style="display:none;"> <img id="dice5-1" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice5-1.png" style="display:none;"> <img id="dice5-2" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice5-2.png" style="display:none;"> <img id="dice5-3" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice5-3.png" style="display:none;"> <img id="dice5-4" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice5-4.png" style="display:none;"> <img id="dice6-1" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice6-1.png" style="display:none;"> <img id="dice6-2" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice6-2.png" style="display:none;"> <img id="dice6-3" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice6-3.png" style="display:none;"> <img id="dice6-4" src="http://pg-happy.jp/wp-content/uploads/2022/05/dice6-4.png" style="display:none;"> </div>
JavaScriptは以下のように指示。
<style type="text/css"> * { margin: 0; padding: 0; } canvas { display:block; background-color:#3399CC; } #wrapper{ width: 100%; height: 500px; } </style> <script> var timerId = NaN; var dice = []; var wpr, cvs, ctx; window.onload = function() { wpr = document.getElementById("wrapper"); cvs = document.getElementById("aaa"); cvs.width = wpr.offsetWidth; cvs.height = wpr.offsetHeight; for (var i=1; i<=4; i++) { for (var j=1; j<=4; j++) { dice.push(document.getElementById("dice" + i + "-" + j)); } } ctx = cvs.getContext("2d"); ctx.drawImage(dice[0], 50,50); } function startTimer() { clearInterval(timerId); timerId = setInterval(korogasi, 100); } function stopTimer() { clearInterval(timerId); } function korogasi() { var rnd = Math.floor( Math. random() * dice.length); ctx.drawImage(dice[rnd], 50,50); } </script>
window.onload = function()でこのページがロードされたときの処理を行う。
29行目からdiceの配列に画像dice1-1~dice6-4までをセットしていく。
スタートボタンが押されたらstartTimer関数を動かしその中でsetInterval関数を用いて100ミリ秒ごとにランダムで画像を表示(korogasi関数)。
ストップボタンが押されたらstopTimer関数を呼び出しTimerを止める。