2012-05-03 19 views
6

Estoy utilizando el excelente plugin jQuery Reel (http://jquery.vostrel.cz/reel) para un proyecto. Me gustaría enlazar al evento scroll de la ventana, así que cuando el usuario se desplaza hacia abajo de la página, el complemento avanza 1 fotograma, por ejemplo, cada 10px desplazado, si el usuario se desplaza hacia arriba la animación se invierte.Evento de desplazamiento de la ventana jQuery. Por cada XX píxeles desplazados

El complemento tiene métodos que puedo pasar los valores a ningún problema y sé cómo enlazar al evento de desplazamiento de la ventana. Lo que estoy luchando es el último.

¿Cómo puedo usar jQuery/JavaScript para decir por cada 10 píxeles desplazados en cualquier dirección vertical avanzar 1 fotograma en la animación? Sé que puedo almacenar el desplazamiento de la ventana en una variable, pero no estoy seguro de cómo decir cada vez que alcanza un múltiplo de 10 de avance de un cuadro.

Muchas gracias de antemano.

EDITAR

Gracias a la ayuda de los usuarios a continuación trabajé encontrar una solución. En la siguiente manera:

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

Así que aquí estoy recibiendo la distancia desplazado en windowScrollCount, traduciéndola en marcos en animationFrame y el establecimiento de nuevo con .reel ("marco", animationFrame); De hecho, estoy haciendo esto por cada 100 fotogramas, ya que cada 10 fue rápido.

Respuesta

5

Gracias a la ayuda de codef0rmer y noShowP I trabajado una solución. En la siguiente manera:

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

Así que aquí estoy recibiendo la distancia desplazado en windowScrollCount, traduciéndola en marcos en animationFrame y el establecimiento de nuevo con .reel ("marco", animationFrame); De hecho, estoy haciendo esto por cada 100 fotogramas, ya que cada 10 fue rápido.

1

lo que pueda tener un elemento pegajoso a la parte superior de la página,

position: fixed; arriba 0; izquierda: 0;

(oculto si desea).

Y luego, cuando se está desplazando puede controlar el offset:

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

A continuación, puede ver hasta abajo de la página que se haya desplazado, así que cada vez que desplazarse ver cuál es su valor superior es y eventos de activación ¿apropiadamente?

EDIT:

He creado un pequeño jsFiddle con un comienzo de lo que creo que es necesario.

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

Im apenas calcular el marco que necesita para estar en el almacenamiento y que en una variable. ¿Es algo como lo que estás buscando?

+0

Gracias por la respuesta, pero eso no es lo que quiero. He actualizado el último párrafo anterior para aclarar el requisito. – mtwallet

+0

Nunca antes he usado carrete, ¿ya sabes cómo avanzar un cuadro y solo necesitas saber cómo llamar esos eventos cada vez que se desplaza 10px? – noShowP

+0

Creo que está en la línea correcta aquí. Puedo hacer referencia al recuento de cuadros en una variable. Simplemente no entendí cómo cuando scrollTop golpea 10, luego 20, luego 30, etc. avanzan un cuadro (o agregan uno a la variable de cuadro). Estoy empezando a entender ahora gracias por la ayuda – mtwallet

3

Si estoy equivocado entonces puede que desee esto:

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'); 
    } 
}); 

Demostración: http://jsfiddle.net/Dyd6h/

+0

codef0rmer gracias por tu respuesta. Eso no es exactamente lo que quiero, aunque empiezo a entender ahora cómo puedo lograrlo. Básicamente, cada vez que scrollTop llegue a 10, luego a 20, luego a 30, avanzará un fotograma. – mtwallet

+0

codef0rmer gracias por la ayuda, lo he resuelto, por favor vea mi respuesta anterior. – mtwallet

+0

@mtwallet: ¡Genial! Me alegro de que funcionó. – codef0rmer

Cuestiones relacionadas