@dropdatabasic

Как заставить работать интервал setInterval()?

Есть довольно примитивный код который должен рисовать квадрат 30х30 в рандомном месте холста
a и b = заранее заданная рандомная ширина и высота.
Но он отрабатывает так: через секунду появляется квадрат 30х30 и все. Через 5 сек отрабатывает таймаут с алертом.
Как заставить появляться новому квадрату каждую секунду до истечения 5 сек?

function getRect() {
ctx.fillRect(a, b, 30, 30);
}
var timer;
timer = setInterval(() => getRect(), 1000);
setTimeout(() => {
clearInterval(timer);
alert('stop');
}, 5000);
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
Подозреваю, что квадрат у вас рисуется 5 раз, но в одном и том же месте, т.к. a и b у вас не меняются. И переименуйте getRect() в drawRect()!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
irishmann
@irishmann
Научись пользоваться дебаггером
Я так понял что за 5 сек, должно появиться 5 квадратов, 1 в одну секунду. Интервал у нас 1 секунда, заменяем итерации, если итерация больше или равно 5, останавливаем интервал.
var iteration = 1;
var timer = setInterval(function (){
    /* 
        рисуем квадрат
    */
    
    iteration++;
    if (iteration >= 5) clearInterval(timer);
}, 1000);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы