{category}

JavaScript - その他の非同期機能

requestAnimationFrame()

リクエストアニメーションフレーム(非同期処理

意味 次のフレーム描画前に関数を実行


requestAnimationFrame()とは?

requestAnimationFrame()は、次の画面描画の前に特定の関数を実行するためのメソッドです。主にアニメーションの実装に使用されます。

requestAnimationFrame()の具体的な使い方

滑らかな四角形のアニメーション例

<button onclick='startAnimation()'>アニメーション開始</button>
<div id='animationContainer' style='width: 300px; height: 150px; border: 1px solid black;'>
  <div id='box' style='width: 50px; height: 50px; background-color: red; position: relative;'></div>
</div>
<script>
function startAnimation() {
  const box = document.getElementById('box');
  let start;

  function step(timestamp) {
    if (!start) start = timestamp;
    const progress = timestamp - start;
    box.style.left = Math.min(progress / 10, 250) + 'px';
    if (progress < 2500) {
      requestAnimationFrame(step);
    } else {
      alert('アニメーション完了');
    }
  }

  requestAnimationFrame(step);
}
</script>

このコードは、requestAnimationFrame()を使用して赤い四角形を滑らかに右に移動させるアニメーションを作成します。アニメーションは2.5秒間続き、完了時にアラートを表示します。これにより、requestAnimationFrame()がどのように滑らかなアニメーションを実現するかを視覚的に確認できます。

requestAnimationFrame()に関するよくある質問

Q. requestAnimationFrame()の利点は?
A. requestAnimationFrame()は、ブラウザの描画タイミングに合わせて実行されるため、滑らかなアニメーションが可能です。また、非表示タブでは実行を停止するため、リソースを節約できます。
Q. setInterval()との違いは?
A. setInterval()は固定間隔で実行されますが、requestAnimationFrame()はブラウザの描画タイミングに合わせて実行されます。そのため、requestAnimationFrame()の方がアニメーションに適しています。
Q. キャンセル方法は?
A. cancelAnimationFrame()を使用してキャンセルできます。requestAnimationFrame()が返すIDを引数として渡します。

requestAnimationFrame()が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、JavaScriptのrequestAnimationFrame()やPromise.any()、clearTimeout()、finally()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


JavaScriptを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!JavaScriptはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

Promise.any()

最速のPromise反映

種類: Promise

clearTimeout()

遅延実行をキャンセル

種類: その他の非同期機能

finally()

完了後の操作

種類: Promise

getElementsByTagName()

タグ名で要素群を取得

種類: DOMの選択(1)

animationiteration

CSSアニメーションが1サイクル完了するたびに発火するイベント。

種類: その他のイベント