2012-05-11 14 views
0

タイトルは.. Jquery、settimeout、およびsetintervalを使用せずにJavaScriptの最も簡単なアニメーションを作成する方法はありますか?私はあまりにも長い間研究してきましたが、何も見つかりませんでした。それを行う方法がないかもしれない、ちょうど不思議。クロスブラウザーも探しているので、CSSアニメーションも機能しません。jquery/settimeout/setintervalなしのJavaScriptアニメーション

+0

質問に欠けている重要な部分があります: 'setTimeout()'と 'setInterval()'はなぜあなたにとって問題なのですか? – Amadan

+0

なぜjqueryなしでアニメーションをしたいのですか?おそらく、DOMに触れるには、最も速く/最も安全な方法です。 – frenchie

+0

アニメーションGIFを使用することができます - すべてのブラウザでサポートされており、JavaScriptはまったく必要ありません。 – RobG

答えて

5

現在、ほとんどのアニメーションを行う「正しい」方法はwindow.requestAnimationFrameで、指定した時刻にコールバック関数を実行する点でsetTimeoutのように動作します。

これは60fpsで実行するように最適化されており、一部のブラウザ(FF)では、次の描画までの正確なミリ秒数がわかり、アニメーション位置を非常に正確に計算できます。

Googleの「requestAnimationFrame shim」は、古いブラウザ用のさまざまなクロスブラウザ実装です。シムはすべてsetTimeout —を使用しています。

+0

これは私が探しているものです!ありがとうございました! – ALF

+1

'window.requestAnimationFrame'は一部のブラウザでのみ機能します(IE10以前はIEのバージョンがなく、5.3以前のSafariはありませんなど)。詳細については、http://www.caniuse.com/#search=requestanimationFrameを参照してください。そして、古いブラウザの回避策は 'setTimeout()'や 'setInterval()'を使いますので、回避策はありません。したがって、タイマーのないブラウザーでも動作する必要がある場合、この答えは解決できません(解決策がないため)。 – jfriend00

+1

@ jfriend00 - それは私が最後の文で言ったことではありませんか? :) –

1

いいえ、どのように間隔/タイムアウトなしでそれを行い、それをクロスブラウザで行うことができますか?あなたはそれを引き金にするために何かが必要です。

1

ユーザーの入力に何かをアニメートしている場合を除きます。ユーザーがマウス移動イベントまたはページスクロールイベントをトリガしたときに何かをアニメーション化すると、動作する可能性がありますが、ストップアンドゴーとなり、トリガするユーザーに100%依存します。

0

いいえ、私はsetTimeout()またはsetInterval()を使用せずにJavaScriptで一時停止を行う方法はないと思います。

私が考えることができる唯一の選択肢は、javascriptがXMLHttpRequestオブジェクトレスポンスのようなイベントを待つことです。これはばかげています。

JavaScriptの場合はThread.sleep()、Unixシステムの場合はusleep()のような便利な「(ミリ秒)ミリ秒の実行を続行する」を探しているなら、悲しいことはありません。

私は、Google Sketchupで実行されているRubyスクリプトでタイミング目的で聞いたことがあるので、誰かが目に見えないHTMLウィンドウをsetInterval()を使って少しのJavaScriptを実行するだけで済むようにしました。私はあなたがJavaScriptを実行するためにこのような長さに行くと、まだsetInterval()を使用して、おそらく他のオプションがないと思う。

関連する問題