Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/12/2009, 06:27
pablitino
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda con precarga de imágenes

Gracias a los dos por las respuestas, me han orientado muy bien sobre lo que quiero hacer. Pero sigo teniendo el mismo problema a pesar de comprobar que se han cargado todas las imágenes con el "complete" de todas las imágenes.

Basta con comprobarlo hasta que todas las imágenes tengan complete a true?? Luego no hace falta que haga nada con las imágenes??
El navegador sigue haciendo peticiones a las imágenes...

Voy a concretar más lo que hago:

1- Primero obtengo un array datos que tiene la ruta de las imágenes.
2- Llamo a preloadImagenes(datos)
Código javascript:
Ver original
  1. function preloadImagenes(datos)
  2. {
  3.     imageImagenes = new Array(datos.length-2);
  4.     boolImagenes = new Array(datos.length-2);
  5.     for(var i=0; i<imageImagenes.length; i++) // Se precargan todas las imagenes
  6.     {
  7.         var imagen = "imagenes/grande/"+datos[i];
  8.         imageImagenes[i] = new Image();
  9.         imageImagenes[i].src = imagen;
  10.         boolImagenes[i] = false;
  11.     }
  12.    
  13.     comprobarCargadas();
  14. }
Que inicializa los arrays imageImagenes (con los objetos Image), boolImagenes (que contiene el valor booleano que confirma si una imagen a sido cargada o no) y contImagenes (un valor entero que cuenta las que han sido cargadas).

3- La anterior llama a comprobarCargadas.
Código javascript:
Ver original
  1. function comprobarCargadas()
  2. {
  3.     if (contImagenes == imageImagenes.length) //Cuando están todas cargadas
  4.         {              
  5.             alert("todas");
  6.             //for(var i=0; i<imageImagenes.length; i++)
  7.                 //$("#img-cache").append("<img src=\""+imageImagenes[i].src+"\"></img>");
  8.             return;
  9.         }
  10.     for (var i=0; i<imageImagenes.length; i++)
  11.         if(boolImagenes[i]==false && imageImagenes[i].complete) // Se ha cargado imageImagenes[i]
  12.         {
  13.             boolImagenes[i] = true;
  14.             contImagenes++;
  15.         }
  16.     setTimeout("comprobarCargadas()", 10);
  17. }

Que comprueba recursivamente si se han cargado todas.

4- Añado las fotos en elementos img de la siguiente forma:

Código javascript:
Ver original
  1. for (var i=2; i<datos.length; i++)
  2. {
  3.     cadena += "<img class='miniImagen' src='imagenes/mini/"+datos[i]+"' onClick='document.getElementById(\"imagenGrande\").src=\"imagenes/grande/"+datos[i]+"\");' title="+datos[i]+" alt="+datos[i]+" ></img>";
  4.         }
Estos son los elementos que contienen los thumbails de las imágenes grandes. Cuando se pinche en uno de ellos quiero que se muestre en otro elemento la imagen grande... no sé si el problema está en que la imagen no se carga hasta que se hace click... pero también he probado a añadirlas en un elemento oculto y nada. Cuando hago click el navegador sigue haciendo peticiones...

No entiendo que es lo que pasa... es como si no funcionara la precarga... Lo siento por el rollazo, pero quería explicarme bien. ¿Alguna solución o propuesta?