「バック バッファ」キャンバスへの描画呼び出しを記述し、drawImage を使用してそれらをメイン キャンバスに配置する次のコードがあります。これは最適化を目的としており、すべての画像が順番に配置されるようにするためです。
バッファー キャンバスをメイン キャンバスの上に配置する前に、fillRect を使用してメイン キャンバスに濃い青色の背景を作成します。
ただし、青い背景はスプライトの後にレンダリングされます。fillRect 呼び出しを最初に行っているため、これは予想外です。
これが私のコードです:
render: function() {
this.buffer.clearRect(0,0,this.w,this.h);
this.context.fillStyle = "#000044";
this.context.fillRect(0,0,this.w,this.h);
for (var i in this.renderQueue) {
for (var ii = 0; ii < this.renderQueue[i].length; ii++) {
sprite = this.renderQueue[i][ii];
// Draw it!
this.buffer.fillStyle = "green";
this.buffer.fillRect(sprite.x, sprite.y, sprite.w, sprite.h);
}
}
this.context.drawImage(this.bufferCanvas,0,0);
}
これは、メイン キャンバスではなく、バッファ キャンバスで fillRect を使用した場合にも発生します。
「source-over」と「destination-over」の間で globalCompositeOperation を (両方のコンテキストで) 変更しても、これは変わりません。
逆説的に言えば、入れ子になった for ループ内に青色の fillRect を配置し、他の描画呼び出しを使用すると、期待どおりに動作します...
前もって感謝します!
補遺: 複合操作の変更は期待どおりに動作しますが、この特定の問題を解決するものではありません。あいまいで申し訳ありません。