2009-05-24 3 views
2

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

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

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

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

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

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

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

Спасибо, Matt

ответ

0

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

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

setTimeout(startScrolling, "1000"); 

или:

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

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

Смежные вопросы