私は最近、HTML5/Canvas の作業を開始し、Firefox で作業していたことを試すことにするまで、Chrome で作業をテストしながら非常に満足してビジネスに取り組んでいました...あまりうまくいきません。
これは私がやっていることの骨の折れる例です。基本的な requestAnimationFrame shim を設定すると、メイン ループがキャンバスをクリアし、オブジェクトを更新して描画します。簡単なことですが、このような例はどこにでもあります。
function loop() {
canvas.width = canvas.width;
requestAnimFrame(loop);
rR.update();
rG.update();
rB.update();
rY.update();
rR.draw();
rG.draw();
rB.draw();
rY.draw();
}
function Rect(color, x, y, speedX, speedY) {
this.x = x;
this.y = y;
this.color = color;
this.speedX = speedX;
this.speedY = speedY;
}
Rect.prototype.draw = function () {
context.fillStyle = this.color;
context.beginPath();
context.rect(this.x, this.y, 10, 10);
context.closePath();
context.fill();
};
Rect.prototype.update = function () {
if (this.x < 0 || this.x > canvas.width) this.speedX = -this.speedX;
if (this.y < 0 || this.y > canvas.height) this.speedY = -this.speedY;
this.x += this.speedX;
this.y += this.speedY;
};
var rR = new Rect("#FF0000", canvas.width/2, canvas.height/2, 2, 2);
var rG = new Rect("#00FF00", canvas.width/2, canvas.height/2, -2, -2);
var rB = new Rect("#0000FF", canvas.width/2, canvas.height/2, 2, -2);
var rY = new Rect("#FFFF00", canvas.width/2, canvas.height/2, -2, 2);
http://jsfiddle.net/Polaris666/psDM9/3/
Chrome でこれをテストしたところ、見栄えはよくなりましたが、Firefox ではかなり単純なタスクのように、多くの吃音やティアリングが見られました。
同様の質問を見つけましたが、明確な解決策があるものはありません。これはFirefoxのことですか?Webkit ブラウザーはこれを行うのに優れているだけですか? あきらめて、ブラウザの将来のバージョンで修正されることを願うべきでしょうか? それとも、それは私の特定の設定ですか?FireFox 17.0.1 で Windows 7 64 ビットを使用しています。
どんな助けでも大歓迎です。