У меня есть простая анимация на холсте: два прямоугольника перемещаются в двух разных направлениях. Однако я чувствую, что это может быть упрощено.Просто анимация холста
http://jsfiddle.net/tmyie/R5wx8/6/
var canvas = document.getElementById('canvas'),
c = canvas.getContext('2d'),
x = 10,
y = 15,
a = 20,
b = 50;
function move() {
c.clearRect(0, 0, 500, 300);
c.fillRect(0, y, 5, 5),
c.fillRect(b, 5, 15, 15);
x++;
y++;
b++
if (y > canvas.height || x > canvas.width) {
y = 0;
x = 0;
}
}
setInterval(move, 100);
Например, что произойдет, если я хотел создать еще три фигуры? На данный момент, я должен был бы создать больше переменных для каждой координаты:
x++;
y++;
b++
Есть ли способ, которым я мог бы превратить каждый прямоугольник в свой собственный объект?
Вы должны рассмотреть возможность использования [requestAnimationFrame()] (https://developer.mozilla.org/en/docs/Web/API/window.requestAnimationFrame) вместо setInterval() при анимации. Лучше для производительности, и цикл останавливается, когда вкладка браузера не активна. Чтобы создать непрерывный цикл, замените строку setInterval на 'window.requestAnimationFrame (move);' и добавьте ту же строку снова в начале функции перемещения. – Strille