私はで遊んでいますが、Chrome以外のブラウザでは非常にぎこちないアニメーションが得られます。requestAnimationFrameでいくらか安定したフレームレートを達成しましたか?
は、私はこのようなオブジェクトを作成します。
var object = function() {
var lastrender = (new Date()).getTime();
var delta = 0;
return {
update: function() {
//do updates using delta value in calculations.
},
loop: function() {
var looptimestamp = (new Date()).getTime();
delta = looptimestamp - lastrender;
lastrender = looptimestamp;
this.update();
window.requestAnimationFrame(this.loop.bind(this));
}
};
}
今私はcanvas要素の1つの四角形を描画していますし、それを周りに移動します。これは、プロセッサ上での非常に軽量な操作です。これはChromeで非常にスムーズに実行されていますが、ログにデルタ値を記録すると、ほぼ一貫して約17になります。私はFirefoxやSafariで同じことを行う場合は、私は次のデルタ値を取得する:
17-3-17-2-32-34-32-31-19-31-17-3-0-14-3-14-35-31-16-3-17-2 ... and so on
ブラウザは非常にうまく表示と同期されていない、とChrome以外の他のすべての例では、1のだろうかのように見えます16ミリ秒をターゲットタイムアウトとして使用して、古いsetTimeoutメソッドを使用してスムーズなアニメーションを取得します。
Chrome以外のブラウザでを使用してスムーズなアニメーションを作成することができますか? Firefoxで上に掲示された値よりも安定したデルタ値を得ることに成功した人はいますか?
if (delta > 5) this.update();
どのようなアニメーションで作業していますか? jsfiddleを作ることを提案する。 – Raptor
'new Date()。getTime()'ではなく 'performance.now()'でテストするのはどうですか?私は、タイマーの解像度が2msの範囲にあるとは思っていません... –
現時点では興味深いものはありませんが、divの動きがかなりあるアプリがあります。この種のアニメーションをキャンバス要素。しかし今はちょっと滑らかなアニメーションを動かそうとしています。 – acrmuui