私は奇妙な問題を突き詰めました。次のコードは、半不透明な矩形で何度も何度も上書きされるため、イメージがぼやけてしまいます。複数回適用するとアルファ付きrgba fillStyleが完全に不透明にならない
少なくとも10回目の繰り返しがdraw();
の場合、イメージは完全にオーバードラングする必要があります。これは、rectが完全に不透明であるべきであるからです。しかし、実際に完全に消えてしまうことはありません。
この影響は、Firefoxの場合よりもChromeの方が悪いです。しかし、注意してください:悪い画面がこの不具合を隠すかもしれません=)
私はまたjsFiddleでdemoを作った。
$(function() {
var canvas = $("#mycanvas"),
ctx = canvas[0].getContext("2d"),
imgUrl = "http://it-runde.de/dateien/2009/august/14/25.png";
var image = new Image();
image.src = imgUrl ;
$(image).load(function() {
ctx.drawImage(image, 0, 0, canvas.width(), canvas.height());
draw();
});
function draw() {
ctx.fillStyle = "rgba(255, 255, 255, 0.1)";
ctx.fillRect(0,0,canvas.width(),canvas.height());
setTimeout(draw, 100);
}
});
1が達成したいことの効果は、オブジェクトがすべてのキャンバス上で動いていると言うと、すでに描かれた位置はアフターグロー後のフェード効果のように、わずかに誇張得る、ということです。しかし、この結果はちょうど醜いです。
これには解決策がありますか?
に道を作る例は、キャンバスは以前の状態を「覚える」なしで動作を覚えておいてください。したがって、0.1のアルファは、10回後に完全に不透明になりましたが、不透明度は実際には決して到達しない '(1 - 0.1)*(1 - 0.1)* ...' 「0」。 – pimvdb