2017-05-02 4 views
0

私はこの方法で学ぶことを始めていますが、​​ですが、わかりやすく(少なくとも私にとっては)難しいと感じました。私はのsetInterval/setTimeoutをがどのように機能するかを知っているが、私はいくつかの簡単なコードを入力しようとしたときのようにテストするために:requestAnimationFrame confused

function message(){console.log('hello');} 
requestAnimationFrame(message); 

これはhelloメッセージは一度だけ表示され、コンソール内の任意のアニメーションを作成しませんが、私はrequestAnmiationFrame(message)を呼び出すときメッセージ関数の内部では、ループは無限大である(それが働いている)。

しかし、私はsetInterval/setTimeoutを使用して、メッセージ関数内にいなくてもこのメッセージ関数をどこでも呼び出すことができます。

requestAnimationFrame()メソッドを関数内で実行する必要があることを理解できますか?または、内部にrequestAnimiationFrame()メソッドを使用しているときに、関数自体が無限ループするループのデフォルトループがあるとしますか?

質問は愚かかもしれないが、本当に私を啓発できる人を願っています。

答えて

0

requestAnimationFrameは実際には何もレンダリングしません。単にブラウザのレンダリングループをコードに同期させるだけで、プログラムで画面上にアニメーションをレンダリングすることができます。

これは、ブラウザがフレームをレンダリングするたびに指定するコールバック関数を起動します。ここでは、それが使用されている良い例です:javascript game

+0

'はあなたのコードにブラウザのレンダリングループを同期します。 、どうもありがとう、どうもありがとう! – mystreie

関連する問題