2012-05-03 2 views
6

Sto utilizzando l'eccellente plug-in jQuery Reel (http://jquery.vostrel.cz/reel) per un progetto. Vorrei associare l'evento scroll della finestra, quindi quando l'utente scorre la pagina verso il basso, il plug-in avanza di 1 fotogramma per dire che ogni 10px scorre, se l'utente scorre verso l'alto l'animazione viene invertita.evento di scorrimento della finestra jQuery. Per ogni XX pixel a scorrimento

Il plug-in ha metodi per passare i valori senza problemi e so come associare all'evento di scorrimento della finestra. Quello con cui sto combattendo è l'ultimo.

Come posso usare jQuery/JavaScript per dire per ogni 10 pixel scansionati in qualsiasi direzione verticale avanzamento 1 fotogramma nell'animazione? So che posso memorizzare lo scroll della finestra in una variabile, ma non so come dire ogni volta che colpisce un multiplo di 10 avanti di un fotogramma.

Molte grazie in anticipo.

EDIT

Grazie per aiutare gli utenti di seguito ho lavorato una soluzione. Come segue:

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

Quindi qui io sono sempre la distanza scorre nella windowScrollCount, tradurlo in fotogrammi nella animationFrame e l'impostazione di nuovo con .reel ("frame", animationFrame); In realtà sto facendo questo per ogni 100 fotogrammi come ogni 10 era veloce.

risposta

5

grazie all'aiuto di codef0rmer e noShowP ho elaborato una soluzione. Come segue:

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

Quindi qui io sono sempre la distanza scorre nella windowScrollCount, tradurlo in fotogrammi nella animationFrame e l'impostazione di nuovo con .reel ("frame", animationFrame); In realtà sto facendo questo per ogni 100 fotogrammi come ogni 10 era veloce.

1

Si potrebbe possibile avere un elemento appiccicoso alla parte superiore della pagina,

position: fixed; superiore 0; a sinistra: 0;

(nascosto se si desidera).

E poi, quando si sta scorrendo è possibile monitorare il suo offset:

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

Si può quindi vedere quanto in basso nella pagina sia stato selezionato, in modo che ogni volta che scorrono vedere ciò che il suo valore superiore è e gli eventi di trigger appropiately?

EDIT:

ho creato un po 'di JSfiddle con un inizio di quello che penso che vi serve.

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

Im solo il calcolo del telaio è necessario essere su e memorizzare che in una variabile. È qualcosa di simile a quello che stai cercando?

+0

Grazie per la risposta, ma questo non è quello che sto volendo. Ho aggiornato l'ultimo paragrafo sopra per rendere più chiara la richiesta. – mtwallet

+0

Non ho mai usato la bobina prima, sai già come farlo avanzare di un fotogramma e devi solo sapere come chiamare quegli eventi ogni volta che si scorre 10px? – noShowP

+0

Penso che tu sia sulla linea giusta qui posso fare riferimento al numero di frame in una variabile. Semplicemente non ho capito come quando lo scrollTop colpisce 10 e poi 30 ecc. Anticipa un frame (o ne aggiungo uno alla variabile frame). Sto iniziando a capire ora grazie per l'aiuto – mtwallet

3

Se mi sbaglio allora si potrebbe desiderare questo:

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 grazie per la tua risposta. Non è proprio quello che voglio, anche se sto cominciando a capire ora come posso ottenerlo. Fondamentalmente ogni volta che scrollTop colpisce 10 e poi 20 ecc., Si fa avanzare di un fotogramma. – mtwallet

+0

codef0rmer grazie per l'aiuto, ho lavorato fuori per favore vedi la mia risposta sopra. – mtwallet

+0

@mtwallet: fantastico! Sono contento che ha funzionato. – codef0rmer