Foros del Web » Programando para Internet » Jquery »

Detener un setinterval en una posición determinada de scroll

Estas en el tema de Detener un setinterval en una posición determinada de scroll en el foro de Jquery en Foros del Web. Saludos. A ver si alguien me puede echar una mano, estoy atascado. Trato de hacer que 6 divs, llamados bolos, se animen aleatoriamente cuando aparecen ...
  #1 (permalink)  
Antiguo 16/12/2018, 03:43
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 81
Antigüedad: 10 años
Puntos: 1
Detener un setinterval en una posición determinada de scroll

Saludos.
A ver si alguien me puede echar una mano, estoy atascado.
Trato de hacer que 6 divs, llamados bolos, se animen aleatoriamente cuando aparecen en pantalla al hacer scroll. Y quiero que dejen de animarse cuando el usuario siga haciendo scroll en una posición determinada. Detectar las posiciones lo que conseguido, el console.log me lo demuestra. Pero los bolos siguen animándose a pesar del clearinterval. No entiendo pr qué. Gracias por adelantado.
La variable "solouna" creo que sobra, es un intento de que se genere un sólo setinterval al hacer el scroll.
Código:
$(document).ready(function(){
	var solouna = 0;//para solo un setinterval
	$(window).on('scroll', function(){
		var elscroll = $(window).scrollTop();
		var altvent = $(window).height();
		var disparamapa = $('.mapa').offset().top - (altvent/2);
		var stopmapa = $('.mapa').offset().top;
		if(elscroll >= disparamapa && elscroll < stopmapa && solouna == 0){
			var luces = setInterval(function(){
				var bolo = '.bolo' + parseInt((Math.random() * 6) + 1);
				var boloescala = parseFloat(((Math.random() * 2)/10));
				$(bolo).css('transform', 'scale(' + boloescala + ')');
			}, 1200);
			solouna = 1;
		}
			if(elscroll > (stopmapa - 200)){
				clearInterval(luces);
				solouna = 0;
			console.log(elscroll + ' ' + stopmapa + ' ' + solouna);
		}
	});

});

Etiquetas: scroll, setinterval
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:03.