JavaScript - Animar imagen con jquery simulando un gif

 
Vista:
Imágen de perfil de george

Animar imagen con jquery simulando un gif

Publicado por george (3 intervenciones) el 26/01/2018 02:33:27
El rollo es animar una imagen asignando una imagen de una lista, son 4 imagenes y la imagen a cambiar, se usa javascript y jquery. Es como hacer un gif; el problema es que no funciona la animacion, no cambia la imagen. Pero si agrego una interrupcion en el codigo como "alert()" si muestra el cambio de imagen. No se donde esta el error.

El codigo javascript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).ready(function(){
	animagato(21);
});
 
function animagato(n){
	var i=0;
	var j=0;
	for(i=0;i<n;i++){
		$("#colaanima").attr("src", "cola"+j+".jpg").fadeIn(1500).show();
		j++;
		if(j>=4)j=0;
		alert(j);
	}
}

Pagina web:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
<style type="text/css">
  #gatillo { float:left; width:200px; height:221px; z-index:0; position:relative;}
  .gato {z-index=0; position: absolute;}
</style>
<script src="jquery-2.2.4.min.js" type="text/javascript"></script>
<script src="anima.js" type="text/javascript"></script>
</head>
<body>
  <div id="gatillo">
    <img id="colaanima" src="cola0.jpg" alt="" />
  </div>
  <div id="igato0" class="gato" hidden="true"><img id="gato0" src="cola0.jpg" alt="" /></div>
  <div id="igato1" class="gato" hidden="true"><img id="gato1" src="cola1.jpg" alt="" /></div>
  <div id="igato2" class="gato" hidden="true"><img id="gato2" src="cola2.jpg" alt="" /></div>
  <div id="igato3" class="gato" hidden="true"><img id="gato3" src="cola3.jpg" alt="" /></div>
  </body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge

Animar imagen con jquery simulando un gif

Publicado por Jorge (3 intervenciones) el 26/01/2018 03:14:08
Aqui van para descarga los archivos del proyecto..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Animar imagen con jquery simulando un gif

Publicado por xve (2100 intervenciones) el 26/01/2018 09:52:11
Hola George, te he modificado un poco el javascript para que te funcione... haber que te parece...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$(document).ready(function(){
	animagato(21);
});
 
function animagato(n){
	var i=0, j=0;
	cambiarImagen();
	var loop=setInterval(cambiarImagen, 1500);
 
	function cambiarImagen()
	{
		$("#colaanima").attr("src", "cola"+j+".jpg").hide().fadeIn(1500);
		if(i++>=n)
		{
			clearInterval(loop);
		}
		if(j++>=3)
		{
			j=0;
		}
	}
}

Cualquier cosa... comentamos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Pedro
Val: 101
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Animar imagen con jquery simulando un gif

Publicado por Pedro (23 intervenciones) el 26/01/2018 18:16:25
No sé no sé pero mis Ojos cansados & desgastados me dicen que a lo mejor me meto en un lío al comentar lo siguiente:
Una variable local no puede acceder a una global pido disculpas si estoy equivocado en lo que digo evidentemente no he probado el código, pero me ha venido como un flash al ver que se han creado las variables i y j de forma global y luego ser chequeadas en los if de forma local.

Si no estoy equivocado el alcance de una variable lo delimitan { } pido mis disculpas si estoy equivocado pero creerme estoy hecho polvo del curre y donde se me ha ido la vista, sólo comento para que aprendamos todos juntos.

Regards boths.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Animar imagen con jquery simulando un gif

Publicado por kip (107 intervenciones) el 26/01/2018 18:48:02
Hola Pedro, claro que tienen acceso, en javascript para que las variables sean definidas dentro de un 'scope' debes usar 'var' y en el caso de que quieras acceder a una variable global simplemente basta con llamarla.

VwfKlqu

Lo que se hara en momento de ejecucion es comenzar a buscar el bloque donde se declaro esta variable desde el propio contexto de la ejecución de la linea hasta el ultimo antecesor, es decir comienza a buscar desde el propio scope hasta el de su maximo antecesor(en el caso de los navegadores es el scope de window) si no se encuentra entonces esta variable tendrá un valor de undefined.

Es por ello que siempre se recomienda hacer uso de use strict; para que si se te olvida colocar 'var' dentro de una función al declarar una variable, te lance un error y no sobre-escribir el valor de una variable global o de otro scope.

En el caso de ES6 la cosa es parecida, pero existe 'let' que resuelve este problema de declarar una variable en un solo bloque de ejecución(los { }), dando el acceso de esta solo y unicamente dentro de ese scope y ademas no permite la re-declaracion de la misma variable. https://stackoverflow.com/a/11444416/6591929
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Pedro
Val: 101
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Animar imagen con jquery simulando un gif

Publicado por Pedro (23 intervenciones) el 26/01/2018 19:10:51
Muchas gracias @Kip como dije pido disculpas por mi equivocación y muchísimas gracias por la tan bienvenida explicación. Como dije estoy agotado del duro laburo y siempre hay cosas a las que se te va la vista en los códigos y el alcance de variables en Java fue un tema muy interesante al cual presté atención durante mi ciclo formativo como puedo apreciar en tu explicación, en javascript existe un poco más de margen.

¿Quién no se ha roto el brain alguna vez en java,php o cualquier lenguaje por el alcance de una variable?

Thanks a lot boths.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge

Animar imagen con jquery simulando un gif

Publicado por Jorge (3 intervenciones) el 26/01/2018 21:47:49
GRACIAS a todos!
Quedo de lujo la animacion con el cambio que sugiere XVE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar