我畫了一些矩形,然後擦除並重畫它們以模擬右邊的移動 。然而,畫布抗鋸齒使他們留下痕跡,我不想重畫整個畫布。 Here's what I'm talking about如何撤消畫布反鋸齒?
這裏是該代碼:
var canvas = document.getElementById("canvas");
canvas.width = 800;
canvas.height = 600;
var context = canvas.getContext("2d");
maxFps = 15;
function loop(x) {
setTimeout(function() {
undoRect(x);
drawRect(x + 30);
loop(x + 30);
}, 1000/maxFps);
};
function undoRect(x) {
context.clearRect(x, 0, 30, 30);
};
function drawRect(x) {
context.fillStyle = 'black';
context.fillRect(x, 0, 30, 30);
};
loop(0);
到目前爲止,我試圖清除比我畫一個更大的矩形,但似乎並沒有工作。
我沒試過你的代碼,但是從只有快速閱讀,你似乎只是清楚你在最後一幀畫的位置。你爲什麼不清除整個畫布? – Kaiido
@Kaiido,有時候,畫布教程過分強調清除畫布最小「髒」部分的性能優勢。 – markE
@markE,因爲清除整個畫布並不意味着(同樣多)反鋸齒計算,我不知道是否有任何性能優勢,而且我也不確定是否應該讓提問者在這裏遵循這些方法,我的意思是,大多數教程都是由讀過SO Q/A的人編寫的;-) – Kaiido