キャンバスを使用して、間隔を空けてランダムな色のオブジェクトを生成しています。私がやりたいのは、オブジェクトが霧にフェードインするのと同じように、オブジェクトを白にフェードインすることです。
すべてのフレームのすべてのオブジェクトを再描画することなく、これを実現したいと思います。代わりに、オブジェクトの間に白いレイヤーを配置して(不透明度が小さい)、フェードアウトの効果を与えます。
これが私の現在のアプローチです:http: //jsfiddle.net/zettam/pUVkA/26/
var cvas = document.getElementById("ctxt");
var cx = cvas.getContext("2d");
function randomColor(num) {
return Math.floor(Math.random() * num);
}
setInterval(function() {
var r = randomColor(255);
var g = randomColor(255);
var b = randomColor(255);
cx.fillStyle = "rgba(" + r + "," + g + "," + b + ",1.0)";
cx.fillRect(200*Math.random(), 200*Math.random(), 300*Math.random(), 300*Math.random());
}, 200);
setInterval(function() {
cx.fillStyle = "rgba(255,255,255,0.025)"
cx.fillRect(0, 0, 500, 500);
}, 20);
ご覧のとおり、オブジェクトが完全に白にフェードアウトすることはありませんが、代わりに、どこか灰色のままになります。
フレームごとにすべてを再描画せずに、必要なことをどのように達成できますか?
ありがとう。