Foros del Web » Programando para Internet » Javascript »

Consulta: Precarga de imágenes

Estas en el tema de Consulta: Precarga de imágenes en el foro de Javascript en Foros del Web. Hola! Ante todo aclaro que estoy aprendiendo a programar, no soy un experto. Tengo el siguiente problema: no logro precargar unas imágenes, no sé por ...
  #1 (permalink)  
Antiguo 31/05/2003, 03:56
MCV
 
Fecha de Ingreso: mayo-2003
Mensajes: 3
Antigüedad: 21 años
Puntos: 0
Exclamación Consulta: Precarga de imágenes

Hola!

Ante todo aclaro que estoy aprendiendo a programar, no soy un experto.

Tengo el siguiente problema: no logro precargar unas imágenes, no sé por qué. Utilicé los scripts habituales, y nada.

Intento hacer una barra de navegación con botones con efecto rollover, y cada vez que me sitúo sobre un botón tengo que esperar que el navegador cargue la imágen en cuestión.

Aclaro nuevamente que probé con códigos habituales, por ejemplo:

img1 = new Image (100;15)
img1.src = "imagen.gif"

y cosas asi, pero no logro hacerlo funcionar.

Ojalá alguien me pueda ayudar!

Gracias!!!
  #2 (permalink)  
Antiguo 31/05/2003, 04:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, MCV. Bienvenido al Foro.

No se si habrá sido un error al teclear, pero has puesto:

img1 = new Image (100;15) //con punto y como

y tienes que poner:

img1 = new Image (100,15) //con coma

El resto yo creo que está correcto.

Saludo,
  #3 (permalink)  
Antiguo 31/05/2003, 05:59
MCV
 
Fecha de Ingreso: mayo-2003
Mensajes: 3
Antigüedad: 21 años
Puntos: 0
Gracias por la bienvenida!

Si, tienes razón, eso fué un error de tipeo, porque no copié y pequé. Pero está bien tipeado en el código. Además, como decía, probé otros métodos, y tampoco funcionaron.

En realidad, comenzé utilizando el código de Dreamweaver para barra de navegación, y eso tampoco funcionó. ¿Es esto normal?

Gracias por la rápida respuesta, la verdad que estoy super intrigado!
  #4 (permalink)  
Antiguo 31/05/2003, 06:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola MCV:

Aquí tienes una página con una buena explicación sobre el uso de imágenes, la verdad es que hay cosas que yo no sabía, y creo que son interesantes, como el uso de complete. Aquí tienes el link:
http://www.desarrolloweb.com/manuales/19/

Espero que te sirva.

Saludos
  #5 (permalink)  
Antiguo 31/05/2003, 10:58
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas,

yá que se abrió este tema aprovecho para comentar que esto de las precargas de imágenes me resulta tan eficaz como pitarle a los semáforos. Osea, resulta inutil .

¿De verdad funciona esto de la precarga de imágenes desde js?
  #6 (permalink)  
Antiguo 31/05/2003, 12:44
itatpc
Invitado
 
Mensajes: n/a
Puntos:
Pós sip, querida tunait, pós sip... :)

Yo suelo usarlo cuando tengo una página con mucho gráfico: hago la precarga en la anterior, más ligerita, y listo.

Y claro, paro los "rollover" también va muuuu bien.

Ahora, el problema que tiene el amigo desconozco cuál es. Je, aunque lo conociera no sabría resolverlo... :)

¡Chau corazón!
  #7 (permalink)  
Antiguo 31/05/2003, 14:33
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
itatpc qué alegría leerte!

Pues te cuento que hice un script para un jueguito que necesita 8 imágenes y en su lugar, inicialmente, se cargan otras.

En realidad es el equivalente a poner una serie de imágenes "boca abajo", osea, de entrada se ve la misma imagen repetida. Al hacerles click hacen el quivalente a "darse la vuelta" y muestra una de las imágenes que, teóricamente, se han precargado. Pues nada, aunque deje la página cargarse media hora, siempre al dar click a las imágenes hay que esperar a que vengan desde el servidor.

Es el clásico juego de parejas ocultas, y vas destapando de dos en dos. Clickas en dos, se dan la vuelta (en apariencia, claro) y si no son iguales vuelve a mostrarse el supuesto dorso.
Teóricamente se precargan todas, pero no hay manera. Hay que esperar en cada click que las traiga del server.

¿Alguna idea de por qué no me funciona la precarga?

La precarga la hago mediante

Código PHP:
var imagenes = new Array()
for(
n=0;n<lista.length;n++)
    {
    
imagenes[n] = new Image
    imagencilla 
= eval('"' lista[n] + '.gif"')
    
imagenes[n].src imagencilla
    


Última edición por tunait; 28/08/2009 a las 02:41
  #8 (permalink)  
Antiguo 01/06/2003, 05:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Tunait: En el post que puse antes se hablaba de precarga, y de el uso de complete, que indica que se cargado totalmente en memoria, hice unas pruebas y parece que funciona bien.

Preparé una página que se puede ver aquí .

De todos modos es poco el código así que lo voy a insertar.

Código PHP:
<html>
<
head>
<
title>
    
precarga
</title>
<
script language=javascript>
var 
base "http://www.sucaricatura.com/2003/maxi/2003V00";
var 
imagenes;
var 
ventana false;
var 
contenido = [falsefalsefalsefalsefalsefalsefalsefalsefalsefalse];
var 
cargando true;
var 
suma 0;

function 
detalle(n)    {
    var 
info "<html><body><center>";
    
info += "<table style='width:200; height:20; border:1; background-color:aqua'>";
    
info += "<tr><td id='valor' style='background-color: blue; width:0";// + n * 20;
    
info += "'></td><td></td></tr></table></center></body></html>";
    return 
info;
}

var 
stop false;
var 
im 0;
function 
flash()    {
document.images.flash.src imagenes[im].src;
im = ++im 10;
if (!
stopsetTimeout("flash()"250);
}

function 
mostrar()    {
    var 
carga false;
    for (var 
0imagenes.length++)
        if (
imagenes[i].complete)
            if (!
contenido[i])    {contenido[i] = truesuma++;}
    
cargando suma 10;
    if (!
ventana && cargando)    {
        
ventana window.open("""""top=100,left=100,width=250,height=40");
        
ventana.document.writeln(detalle(suma));
    }
    else    
ventana.document.getElementById("valor").style.width suma 20;
    if (
cargandosetTimeout("mostrar()"10);
    else {
ventana.close(); flash();}
}

function 
precarga()    {
    
imagenes = new Array();
    for (var 
010++)    {
        
imagenes[i] = new Image();
        
imagenes[i].src base ".jpg";
    }
    
mostrar();
}

</script>
</head>

<body onload="precarga()">
<center>
<div id=precarga>
    precarga
</div>
<img src="" name=flash onclick="stop = true;">
</center>
</body>
</html> 
La función flash es para probar que se muestran rápidamente, hay que pinchar sobre la transición de imágenes para detenerlas.

Saludos

Hola otra vez:

Hoy subí una versión más bonita en este link .

No copio el código, porque es básicamente el mismo, pero está mejorada la presentación del porcentaje, y se hace una precarga de más imágenes, siendo más fácil de adaptar a distintas necesidades.

En netscape funciona bien, pero me parece que la gestión de la caché no es muy buena... en opera, da unos fallos que no creo que tengan que ver con la precarga.

Saludos

Última edición por caricatos; 01/06/2003 a las 05:18
  #9 (permalink)  
Antiguo 01/06/2003, 14:15
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
me he estado estudiando el código que dejaste y la verdad es que en lo que es la precarga, aparte de definir la ruta absoluta a las imágens, no hay diferencia con la forma en la que hago yo mi precarga.

La verdad, no sé por qué no se me precargan las imágenes. Cuando carga la página veo en el status que anda descargando todos los archivos. Pero cuando se trata de comenzar a mostrar las imágenes se demora en mostrarlas un par de segundos (cosa que no sucede en local)

Bueno, al menos he visto claro que las precargas sí funcionan. La verdad que había comenzado a perderles la fe.
  #10 (permalink)  
Antiguo 01/06/2003, 17:30
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Tunait: La precarga es igual, pero detrás de la precarga llamamos a una función mostrar que muestra una especie de barra de estado, y se va incrementando con complete: if (imagenes[i].complete)... , que deduzco que es un atributo que inicialmente está a false, y al cargarse la imagen por completo se pone a true.

Entiendo que a veces mis códigos, no son fácil de descifrar, (y a mi también me cuesta entender las cosas de otros)... si quieres que te aclare algo no dudes en preguntarme, y también te recomiendo que mires el link que puse antes de desarrolloweb, que es donde me he informado.

También me parece que KarlanKas en su PAIs hacía una precarga que funcionaba... Si en estos días coincidimos en algún post o el chat, se lo preguntaré.

Saludos
  #11 (permalink)  
Antiguo 02/06/2003, 03:33
MCV
 
Fecha de Ingreso: mayo-2003
Mensajes: 3
Antigüedad: 21 años
Puntos: 0
Hola a todos! Parece que tuve bastante respuesta a mi consulta.

Por lo que veo, de todos modos, hay precargas que funcionan y precargas que no, y el motívo que hace funcionar a algunas y no funcionar a otras por ahora no lo sabemos, pareciera ser.

Voy a chequear en el manual del que Caricatos dejó el link, a ver si descubro algo.

Pero lo cierto es que en principio todos hacemos lo mismo al precargar, y en algunos casos funciona y en otros no.

Vaya misterio!

Saludos.
  #12 (permalink)  
Antiguo 03/06/2003, 13:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Pues sí que es un misterio si, o eso que hacemos algo mal


Cita:
Caricatos dijo en otro post:

Un par de offtopics tunait...

Miré la precarga que te comentaba de KarlanKas y usa el mismo sistema de ".complete", así que parece que es "la solución definitiva" (es un decir)...
caricatos, es que me parece que me has comprendido mal
No busco un preloader, busco que se carguen todas las imágenes en temporales para luego usarlas.

He trabajado tiempo atrás con la propiedad complete para no poner en marcha un script hasta estar todo cargado, pero en este caso no pretendo hacer eso. Pretendo simplemente que en lo que se empieza a jugar se vayan precargando todas las imágenes.
Hay veces en que cargo el juego y me voy a buscar un cafe y a los 10 minutos regreso y comienzo a jugar. En esos 10 minutos ha habido tiempo más que suficiente para que todas las imágenes se carguen. Sin embargo, cada click que doy se demora, señal de que las está descargando del servidor en el momento de hacerles click.


Creo que voy a hacer algún truco salchichero para forzar a que las imágenes estén todas cargadas en la página. Las meteré en un layer oculto todas y listos, así no tendrá más tutía que cargarlas (aunque no se vean)
  #13 (permalink)  
Antiguo 04/06/2003, 04:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

La verdad que para mi era nuevo lo de complete (tampoco recuerdo haber visto temas que hablaran de ello).

Con tu juego, no puedo hablar, porque lo desconozco, aunque sabes que si necesitas algún tipo de ayuda, puedes contar conmigo...

Por lo que dices, me atrevería a decir, que más que problema de una precarga es cosa del sistema operativo...
Ante un requerimiento de memoria, las páginas de memoria (hablando del S.O.) que no se usan se eliminan según ciertas políticas de reemplazo, y una de esas políticas es eliminar primero las páginas de memoria menos usadas. Si el sistema requiere memoria, por ejemplo para activar un salvapantallas, o cualquiera de las rutinas propias del sistema, puede que quite de memoria eso que necesitas... (esa asignatura la tengo aprobada).

Pero no es el tema... puede que poner una capa oculta sea buena idea, al menos espero que te sirva...

Saludos
  #14 (permalink)  
Antiguo 04/06/2003, 14:25
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 3 meses
Puntos: 2
esta se puede ocupar pa cargar una colsulta en asp
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
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 06:45.