我画了一些矩形,然后擦除并重画它们以模拟右边的移动 。然而,画布抗锯齿使他们留下痕迹,我不想重画整个画布。 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