お世話になります。
JS初学者です。
参考書の問に以下のものがありちんぷんかんぷんなため、どなたか分かる方ご教授お願いできませんでしょうか。
以下、参考書の問
html
1<body> 2 <canvas id="canvas" height="400px" width="1000px"></canvas> 3 4 <script> 5 window.addEventListener("load",function(){ 6 let canvas = document.getElementById('canvas'); 7 let ctx = canvas.getContext('2d'); 8 let previousTime = 0; 9 let x = 0; 10 11 12 function drawGraph(timestamp){ 13 let time = Math.ceil(timestamp - previousTime); 14 previousTime = timeStamp; //※ 15 16 if(time < 30){ 17 ctx.fillStyle = 'blue'; 18 }else{ 19 ctx.fillStyle = 'red'; 20 } 21 22 ctx.fillRect(x,400,5,-time); 23 x += 10; 24 25 if(x > 1000){ 26 x = 0; 27 ctx.clearRect(0,0,1000,400); 28 } 29 requestAnimationFrame(drawGraph); 30 } 31 requestAnimationFrame(drawGraph); 32 }); 33 34 </script> 35</body>
この後に選択肢があり、解答は
drawGraph関数内で再度requestAnimationFrame()メソッドを呼び出しているため、エラーが発生する。
となっています。
また解説に
次の再描画時に別のアニメーションを実行させるには、コールバック関数内でrequestAnimationFrame()メソッドを呼び出す必要があります。
とあります。
質問は、解説のように問いのコードを修正するにはどのように直せばいいでしょうか
また、
コードの11行目、
previousTime = timeStamp;
はどういうふうに解釈すればいいでしょうか
(こういうvarやlet、constへの代入ではない=の使われ方を見るのは初めてでどう考えればいいのか思いました。)
分かる方ご教授よろしくお願いします。
(出典「HTML5プロフェッショナル認定試験レベル2」(SHOEISYA)P290)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/02 13:22