回答が無効になりました
ここで説明されている動作 (img
アニメーション gif を参照するタグをキャンバスに書き込むと、それimg
が DOM の一部であるか表示されている場合、gif のさまざまなフレームが書き込まれます) が少なくとも Chrome で変更されたようです。これに対する正しい動作についてのドキュメントがある場合とない場合があります。:)
また、webkitRequestAnimationFrame
X が表示されていない場合、要求された関数が実行されないように、1 つの追加の引数 (要素 X) を取る動作がなくなりました。パフォーマンスとバッテリー寿命の理由から、requestAnimationFrame
描画を必要とする何かを実行する前に、渡す関数の多くで可視性をチェックする必要がある場合があります。
前:
修正済みバージョンをチェックアウトします。
http://jsfiddle.net/eGjak/96/
画像を描画する関数に a を追加するconsole.log()
と、それが呼び出されていることがわかります。問題は、おそらくブラウザがDOMの一部ではないアニメーション画像を更新することを気にしないため、画像自体がアニメーション化されないことです.
私の解決策は、アニメーション GIF を DOM の一部にし、サイズを 0 にすることでした。これは問題なく動作します。
http://jsfiddle.net/eGjak/96/show/をロードし、Windows または Linux で ctrl-shift-I を使用して要素を検査することで、アニメーションがイメージ タグではなくキャンバスに表示されていることを確認できます。alt-cmd-I。
編集:ここにボーナスがあります!
webkitRequestAnimationFrame
は、アニメーション化されている要素が表示されている場合にのみアニメーションを実行できるようにするために、Mozilla の同等のものよりも 1 つ多い引数を取ります。チェックアウト
http://jsfiddle.net/kmKZa/8/
コンソールを開きます。キャンバスを非表示にすると、アニメーション関数の呼び出しが停止することがわかります。キャンバスを再び表示に切り替えると、アニメーション関数が再度呼び出されます。