2012-05-03 7 views
6

używam doskonałej wtyczki jQuery Reel (http://jquery.vostrel.cz/reel) dla projektu. Chciałbym powiązać z wydarzeniem przewijania okna, więc gdy użytkownik przewinie stronę, wtyczka przesuwa się o 1 ramkę, powiedzmy co przewijane 10 pikseli, jeśli użytkownik przewinie się, animacja zostanie odwrócona.Zdarzenie przewijania okna jQuery. Na każde przewijane XX pikseli

Wtyczka ma metody, które mogę przekazać wartości bez problemu i wiem, jak powiązać do zdarzenia przewijania okna. To, z czym walczę, jest ostatnim.

Jak mogę użyć jQuery/JavaScript do powiedzenia na każde 10 pikseli przewijanych w dowolnym kierunku pionowym z wyprzedzeniem o 1 klatkę w animacji? Wiem, że mogę zapisać przewijanie okna w zmiennej, ale nie jestem pewien, jak powiedzieć za każdym razem, gdy trafi ona w wielokrotność 10 z góry o jedną klatkę.

Wielkie dzięki z góry.

EDIT

Dzięki pomocy użytkowników poniżej wypracowałem rozwiązanie. W następujący sposób:

$(window).scroll(function() 
{ 
    windowScrollCount = $(this).scrollTop(); 
    animationFrame  = Math.round(windowScrollCount/100); 
}); 

Więc tutaj jestem coraz przewijane odległość w windowScrollCount, tłumacząc je w ramki w animationFrame i ustawienie go z powrotem .reel („ramy”, animationFrame); Tak naprawdę robię to na każde 100 klatek, ponieważ każde 10 było szybkie.

Odpowiedz

5

Dzięki pomocy codef0rmer i noShowP I wypracowane rozwiązanie. W następujący sposób:

$(window).scroll(function() 
{ 
    windowScrollCount = $(this).scrollTop(); 
    animationFrame  = Math.round(windowScrollCount/100); 
}); 

Więc tutaj jestem coraz przewijane odległość w windowScrollCount, tłumacząc je w ramki w animationFrame i ustawienie go z powrotem .reel („ramy”, animationFrame); Tak naprawdę robię to na każde 100 klatek, ponieważ każde 10 było szybkie.

1

Można to możliwe mają lepkie element do górnej części strony,

position: fixed; top 0; lewo: 0;

(ukryty, jeśli chcesz).

I wtedy, gdy jesteś przewijania można monitorować jej offset:

$('element').offset().top 

Można wtedy zobaczyć, jak daleko w dół strony masz przewijane, więc za każdym razem przewijać zobaczyć, co jego górna wartość i zdarzenia wyzwalające właściwie?

EDIT:

mam założyć małą JSfiddle z początkiem tego, co myślę, że trzeba.

http://jsfiddle.net/qJhRz/3/

Im właśnie obliczania ramkę trzeba być na przechowywanie i że w zmiennej. Czy jest to coś, czego szukasz?

+0

Dzięki za odpowiedź, ale to nie jest to, czego chcę. Zaktualizowałem ostatni akapit powyżej, aby wymaganie było jaśniejsze. – mtwallet

+0

Nigdy wcześniej nie używałem kołowrotka, czy już wiesz, jak zrobić z wyprzedzeniem jedną klatkę i po prostu musisz wiedzieć, jak wywoływać te zdarzenia za każdym razem, gdy przewijane jest 10 pikseli? – noShowP

+0

Myślę, że jesteś na właściwych liniach, tutaj mogę odnieść się do liczby klatek w zmiennej. Po prostu nie rozumiałam, w jaki sposób, kiedy scrolltop trafi 10, potem 20, a następnie 30 itd., Przesunie jedną klatkę (lub doda jedną do zmiennej klatki). Zaczynam rozumieć teraz dzięki za pomoc – mtwallet

3

Jeśli się mylę, to możesz to:

var jump = 500; // consider this is your 10px 
window.scrollHeight = 0; 
$(window).scroll(function() { 
    console.log($(this).scrollTop()); 
    var diff = $(this).scrollTop() - window.scrollHeight; 
    if (diff >= jump) { 
     window.scrollHeight = $(this).scrollTop(); 
     console.log('reload frame'); 
    } 
}); 

Demo: http://jsfiddle.net/Dyd6h/

+0

codef0rmer dzięki za twoją odpowiedź. To nie jest to, czego chcę, chociaż zaczynam rozumieć, jak mogę to osiągnąć. Zasadniczo za każdym razem, gdy scrollTop trafi 10, następnie 20, a następnie 30 itd., Przesunie się o jedną klatkę. – mtwallet

+0

codef0rmer dzięki za pomoc, udało mi się to sprawdzić proszę zobaczyć moją odpowiedź powyżej. – mtwallet

+0

@twtallet: Cool! Cieszę się, że to działało. – codef0rmer