Событие, приуроченное к JavaScript - PullRequest
0 голосов
/ 09 августа 2011

Я получаю ввод в виде потока координат x / y, и я хотел бы вызвать событие, если эти координаты попадают в указанный диапазон в течение определенного периода времени (скажем, 2 секунды).Может ли кто-нибудь предложить способ сделать это?

1 Ответ

2 голосов
/ 09 августа 2011

Алгоритмически, когда вы впервые обнаруживаете, что он находится в диапазоне, вы делаете setTimeout() в течение 2 секунд. С тех пор, если координаты остаются в границах и таймер уже установлен, вы ничего не делаете. Если координаты выходят за границы, вы останавливаете таймер с помощью clearTimeout(). Если таймер срабатывает до того, как вы его очистите, то координаты остаются в границах в течение требуемого времени.

Вот пример кода:

var myTimer = null;

function processCoordinatePair(x,y) {
    if (inBounds(x,y)) {
        if (!myTimer) {
            setTimeout(function() {
                // we stayed in bounds for 2 seconds, do whatever needs doing
                myTimer = null;         // clear timer for future use
            }, 2000);
        }
    } else {                            // not in bounds any more
        if (myTimer) {
            clearTimeout(mytimer);      // if timer was running, stop it
            myTimer = null;
        }
    }
}  

Реализация функции inBounds(), очевидно, зависит от вас, поскольку вы не описали эту часть проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...