У меня есть страница, которая содержит несколько элементов <canvas>
.Как запустить setInterval() на нескольких холстах одновременно?
Я передаю идентификатор холста и массив данных функции, которая затем захватывает информацию о холсте и передает данные функции draw(), которая, в свою очередь, обрабатывает данные и выводит результаты на холст. Все идет нормально.
Примеры массивов данных;
$(function() {
setup($("#canvas-1"), [[110,110,100],
[180,180,50],
[220,280,80]]);
setup($("#canvas-2"), [[110,110,100],
[180,180,50],
[220,280,80]]);
});
установка функция;
function setup(canvas, data) {
ctx = canvas[0].getContext('2d');
var i = data.length;
var dimensions = {
w : canvas.innerWidth(),
h : canvas.innerHeight()
};
draw(dimensions, data, i);
}
Это прекрасно работает. draw()
работает, и каждый холст заполнен.
Однако - мне нужно анимировать холст. Как только я заменю строку 8 вышеприведенного примера;
draw(dimensions, data, i);
с
setInterval(function() { draw(dimensions, data, i); }, 33);
Он перестает работать, и только рисует последний холст (с остальными оставшимся пустыми).
Я новичок и на javascript, и на холсте, так что извините, если это очевидно, все еще чувствуя мой путь. Руководство в правильном направлении высоко ценится! Благодарю.
Не будучи экспертом по холсту, мне кажется, что глобальный ctx может быть виновником. – HBP