@Phrogz - То, что реализация canvas имеет двойную буферизацию, означает, что наличие двух холстов, одного для рисования и одного для отображения, а затем переворачивания, не будет плохим вариантом.
аюсь анимировать круг и просто перемещаю его по горизонтали, что отлично работает. Однако, пока круг движется, я должен сделать clearRect над этим кругом, чтобы он перерисовывал себя в горизонтальном направлении. Когда я делаю clearRect, он также заставляет фон иметь белую рамку вокруг так эффективно, что он будет одной белой горизонтальной линией в направлении движения круга.
Есть ли способ очистить круг без clearRect?Если мне придется продолжать перерисовывать фон после clearRect, холст будет мерцать, когда в этой области говорят 10 кругов.Любые другие подходы к решению этой проблемы?
function drawcircle() {
clear();
context.beginPath();
context.arc(X, Y, R, 0, 2*Math.PI, false);
context.moveTo(X,Y);
context.lineWidth = 0.3;
context.strokeStyle = "#999999";
context.stroke();
if (X > 200)
{
clearTimeout(t); //stop
}
else
{
//move in x dir
X += dX;
t = setTimeout(drawcircle, 50);
}
}
function clear() {
context.clearRect(X-R, Y-R, 2*R, 2*R);
}