Я внезапно столкнулся, может быть, с небольшой проблемой для тех, кто решает ответить на этот вопрос.
Я пытался сделать следующее:
Создайте
var intrvl; //for interval
function strt() {
//and set interval
intrvl = setInterval(writeT,3000);
}
function writeT() {
//do something here as the interval runs
checkIf(); //check for the mouse down
}
function checkIf() {
//here goes the code that checks if mouse is down and if it is
//then I call another function that begins other useful process
//I tried
if (c.addEventListener('click')) { //c is my canvas
clearInterval(intrvl); //guess clearing the interval yee?
//and then calling the function I want to call
startDoing();
}
}
Я хочу подождать и использовать этот интервал, пока кто-то не нажимает на холст, а затем запускает нужную функцию.
Но всякий раз, когда я нажимаю на холст, функция startDoing()
запускается, но слишком быстро сравнивается с ее запуском без всего этого.
Как я могу заставить его работать? Поскольку я хочу, чтобы первый созданный интервал не существовал и startDoing()
только startDoing()
.
Вы недопонимаете использование addEventListener().
Условие в вашем checkIf()
возвращается мгновенно. Таким образом, ваш код
strt()
startDoing()
.Вместо этого используйте его:
var intrvl;
var clicked = false;
function strt() {
//and set interval
intrvl = setInterval(checkIf,3000);
}
function checkIf() {
if ( clicked ) {
clearInterval( intrvl );
startDoing();
}
}
c.addEventListener('click', function() {
clicked = true;
} );
Этот код мгновенно регистрирует обработчик кликов. Он запускает интервал таймера, как только вызывается strt(). Как только мышь была нажата, щелкнутая переменная установлена так, чтобы отмечать это событие. В следующий раз, когда таймер интервала запускается, он распознает предыдущий щелчок из-за проверки этой переменной и начала того, что вы хотите запустить.