Как сделать так, чтобы окно прокручивалось с помощью положения мыши?

Если я хочу использовать мышь для прокрутки окна, когда оно приближается к одному из краев, как я могу подойти к этому?

Пока что он работает нормально, он проверяет позицию всякий раз, когда перемещается, чтобы убедиться, что он достаточно близок к краю для прокрутки.

Однако он проверяет положение только при каждом движении мыши, поэтому, если вы приблизитесь к краю, он прокрутит один раз и не снова проверит, достаточно ли вы близки для прокрутки. снова.

Как я могу это сделать? Цикл не работает, потому что он просто зависает в браузере, постоянно проверяя без перерыва между проверками. Я тоже пытался это сделать...

function startScrolling() {
    //If we're close to an edge start scrolling in that direction
    //Else stopScrolling = true;

    if(!stopScrolling) {
        setTimeout(startScrolling(), "1000");
    }
}

Эта функция получает позицию мыши из глобальных переменных, установленных событием перемещения мыши, поэтому технически каждый раз, когда она выполняется, у нее должны быть новые позиции мыши. Но, похоже, он даже не ждет, прежде чем снова вызвать startScrolling()... Есть идеи?

Спасибо, Мэтт


person Community    schedule 24.05.2009    source источник


Ответы (1)


Проблема с опубликованным вами кодом заключается в том, что вы выполняете startScrolling вместо того, чтобы передать его setTimeout, т.е. вы вызываете startScrolling() и передаете его результат в качестве первого параметра setTimeout. Поскольку его возвращаемое значение равно null, через 1 секунду ничего не вызывается, и поэтому кажется, что оно игнорируется.

Вместо этого вы хотите сделать это:

setTimeout(startScrolling, "1000");

or:

setTimeout(function (){ startScrolling(); }, "1000");

Первый предпочтительнее, так как он короче и понятнее, хотя во многих случаях вам понадобится второй, если вам нужно передать дополнительные параметры в startScrolling.

person Seb    schedule 24.05.2009