Foros del Web » Programando para Internet » Javascript »

¿Cuál es el mejor método para precargar muchas imágenes?

Estas en el tema de ¿Cuál es el mejor método para precargar muchas imágenes? en el foro de Javascript en Foros del Web. Hola a todos: Tengo una página de fotografía dividida en 6 galerias. En cada galería hay 10 imágenes pequeñas con enlace, otras 10 pequeñas que ...
  #1 (permalink)  
Antiguo 04/04/2006, 11:27
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta ¿Cuál es el mejor método para precargar muchas imágenes?

Hola a todos:

Tengo una página de fotografía dividida en 6 galerias. En cada galería hay 10 imágenes pequeñas con enlace, otras 10 pequeñas que cambian al pasar por encima el raton , y 10 imágenes grandes que cambian en la ventana central. La precarga está hecha con Dreamweaver 8 y noto fallos (imágenes que no se ven) al abrirla en la red.
¿hay algún otro método mas efectivo para precargar las imágenes?

No sé si me habré explicado bien, pues no me manejo muy bien en javascript

la pagina es: eduortega.com

saludos
  #2 (permalink)  
Antiguo 04/04/2006, 12:42
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 eduortega:

Esos script están bien, pero no avisan cuando se terminan de precargar...

En las FAQs puse un script que mustra el porcentaje de carga.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 05/04/2006, 01:40
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
acabo de meter el codigo pero no soy capaz de hacerlo funcionar. ¿Como hacer que desaparezca la barra al acabar de precargar? ¿Hay algun sitio donde poder consultarlo?.
El codigo esta puesto en eduortega.com/deportes2.html

saludos
  #4 (permalink)  
Antiguo 05/04/2006, 01:51
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:

Supongo que el código es el de esta FAQ: http://www.forosdelweb.com/showpost....&postcount=178
Al final de la precarga se ejecuta la función continuar()... pues entonces deberías ocultar la capa del porcentaje desde esa función....

function continuar() {
document.getElementById("estado").style.display = "none";
}

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 05/04/2006, 02:14
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
este es el codigo que he metido, y me sigue sin funcionar
<head>
<script language="javascript" type="text/javascript" >
<!--
<?php BEGIN__VBULLETIN__CODE__SNIPPET function precargar() {
var dibujos = new Array(precargar.arguments.length);
for (var i = 0; i < dibujos.length; i ++) {
dibujos[i] = new Image();
dibujos[i].src = precargar.arguments[i]
}
return dibujos;
}

function precargados(dibujos) {
var parciales = true;
for (var i = 0; i < dibujos.length; i ++)
parciales = (parciales && dibujos[i].complete);
return parciales;
}

function porciento(dibujos) {
var parciales = 0;
for (var i = 0; i < dibujos.length; i ++)
parciales += (dibujos[i].complete) ? 1 : 0;
return parseInt(100 * parciales / dibujos.length);
}
<?php BEGIN__VBULLETIN__CODE__SNIPPET var imagenes;
function continuar() {
alert("Ok.");
}

function cargando() {
document.getElementById("estado").style.width = porciento(imagenes) + "%";
if (precargados(imagenes))
continuar() {
document.getElementById("estado").style.display = "none";
}
else
setTimeout("cargando()", 100);
}

function ini() {
imagenes = new precargar("deportes/deporte01b.jpg","deportes/deporte02b.jpg","deportes/deporte03b.jpg","deportes/deporte04b.jpg","deportes/deporte05b.jpg","deportes/deporte06b.jpg","deportes/deporte07b.jpg","deportes/deporte08b.jpg","deportes/deporte09b.jpg","deportes/deporte10b.jpg","deportes/deporte01.jpg","deportes/deporte02.jpg","deportes/deporte03.jpg","deportes/deporte04.jpg","deportes/deporte05.jpg","deportes/deporte06.jpg","deportes/deporte07.jpg","deportes/deporte08.jpg","deportes/deporte09.jpg","deportes/deporte10.jpg",);
cargando();
}
// -->
</script>
</head>
<body onload="ini()">
<!--capas centrales-->
<div id="capaCentral">
<table width="100%" height="90%" border="0" align="center" cellspacing="0" cellpadding="0">
<tr><td><div align="center" ><img src="deportes/deporte01.jpg" name="deporte01G" id="deporte01G" /></div>
</td></tr></table>
<div id="estado">

</div>
</body>

saludos
  #6 (permalink)  
Antiguo 05/04/2006, 08:11
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:

¿Has cambiado la función continuar() con lo que te he puesto más arriba?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 05/04/2006, 08:16
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
si, la he cambiado por:
function continuar() {
document.getElementById("estado").style.display = "none";
}
pero sigue sin funcionar. No ejecuta el script (por lo menos con el IE 6)

por cierto, la linea <?php BEGIN__VBULLETIN__CODE__SNIPPET ¿hay que ponerla? nunca la habia visto
  #8 (permalink)  
Antiguo 05/04/2006, 08:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por eduortega
si, la he cambiado por:
function continuar() {
document.getElementById("estado").style.display = "none";
}
pero sigue sin funcionar. No ejecuta el script (por lo menos con el IE 6)

por cierto, la linea <?php BEGIN__VBULLETIN__CODE__SNIPPET ¿hay que ponerla? nunca la habia visto
¡No! Esa línea la pone el foro porque la añade el script con que está hecho... no me extrañaría que fuese ese el error.

Quítale esas lineas y nos comentas el resulado. ¡Vale!

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 05/04/2006, 08:38
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
Ya estaban quitadas. El codigo queda asi:

<script language="javascript">
<!--
function precargar() {
var dibujos = new Array(precargar.arguments.length);
for (var i = 0; i < dibujos.length; i ++) {
dibujos[i] = new Image();
dibujos[i].src = precargar.arguments[i]
}
return dibujos;
}

function precargados(dibujos) {
var parciales = true;
for (var i = 0; i < dibujos.length; i ++)
parciales = (parciales && dibujos[i].complete);
return parciales;
}

function porciento(dibujos) {
var parciales = 0;
for (var i = 0; i < dibujos.length; i ++)
parciales += (dibujos[i].complete) ? 1 : 0;
return parseInt(100 * parciales / dibujos.length);
}
var imagenes;
function continuar() {
document.getElementById("estado").style.display = "none";
}

function cargando() {
document.getElementById("estado").style.width = porciento(imagenes) + "%";
if (precargados(imagenes))
continuar() {
}
else
setTimeout("cargando()", 100);
}

function ini() {
imagenes = new precargar("deportes/deporte01b.jpg","deportes/deporte02b.jpg","deportes/deporte03b.jpg","deportes/deporte04b.jpg","deportes/deporte05b.jpg","deportes/deporte06b.jpg","deportes/deporte07b.jpg","deportes/deporte08b.jpg","deportes/deporte09b.jpg","deportes/deporte10b.jpg","deportes/deporte01.jpg","deportes/deporte02.jpg","deportes/deporte03.jpg","deportes/deporte04.jpg","deportes/deporte05.jpg","deportes/deporte06.jpg","deportes/deporte07.jpg","deportes/deporte08.jpg","deportes/deporte09.jpg","deportes/deporte10.jpg");
cargando();
}
// -->
</script>

<body onload="ini()">

y la barra, situada

<div id="barra">
<div style="position:absolute; top: 0; left: 0; width:100%; height: 100%; background-color: gris" > </div>
<div id="estado" style="position:absolute; top: 0; left: 0; width: 1%; height: 100%; background-color: aqua" ></div>
</div>

¿donde esta el error? me estoy volviendo loco
  #10 (permalink)  
Antiguo 05/04/2006, 08:52
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:

Tantas veces he visto errores de lo más inocentes, que no sabría decirte a simple vista que problema tienes... Yo suelo usar las "consolas javascript" de mozilla y opera para encontrar errores con los navegadores mozilla y opera... Te recomiendo su uso (la verdad es que son una gran ayuda).

Si subes la página seguramente sea más fácil darte una ayuda mejor.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 05/04/2006, 09:11
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
La consola de opera me dice:

Event thread: load
Error:
name: ReferenceError
message: Statement on line 1: Reference to undefined variable: ini
Backtrace:
Line 1 of script
ini();
At unknown location
[statement source code not available]

No lo entiendo. Ademas el IE6 me dice "error: se esperaba un objeto"

saludos
  #12 (permalink)  
Antiguo 05/04/2006, 09:19
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:

En principio, prueba solo con un parámetro, porque me parece que tienes una línea muy larga (podría ser el error)... y fíjate si sigue dando error... (los errores suelen ser muy tontos... ya sabes, )

Me reitero con la sugerencia del otro mensaje... súbela para pderla chequear.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #13 (permalink)  
Antiguo 05/04/2006, 09:28
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
la pag está en eduortega.com/deportes2.html, con la wordl wide web delante

saludos
  #14 (permalink)  
Antiguo 05/04/2006, 09:41
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:

Me parece que tu editor te pone código basura... lamentablemente no tengo mi ordenador bien configurado para responderte con seguridad, pero con mis escasos recursos he visto que la función "cargando()" tienes unas llaves que fastidian el código...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #15 (permalink)  
Antiguo 05/04/2006, 10:02
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
Efectivamente sobraban dos llaves y faltaba un punto y coma. Lo he probado con IE6 y Opera 8.52. Lo que no funciona es que desaparezca la barra.

¿esta bien esta función?:

function continuar() {
document.getElementById("estado").style.display = "none";
}

saludos
  #16 (permalink)  
Antiguo 05/04/2006, 10:13
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:

Me parece que ya queda muy poco para que te funcione...

Lo que te puede fallar ahora es:

el color gris no existe (debería ser gray)... y por el código que has puesto antes, tal vez te serviría mejor usar la capa con id=barra... por lo que en vez de getElementById("estado") prueba con getElementById("barra")

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #17 (permalink)  
Antiguo 05/04/2006, 11:00
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
Ya esta solucionado lo de la barra. Parece funcionar en Opera, IE6 y Firefox 1.5. Lo que sigue sin funcionar es que desaparezca la barra,

saludos
  #18 (permalink)  
Antiguo 05/04/2006, 11:05
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
¡Uff!

Debe ser algo muy sencillo (tal vez mayúsculas o alguna cosa sencilla)...
Me alegro que al menos lo "importante" funcione... y por cierto, me parece muy buena la página... me alegra ver que van saliendo páginas algo más artísticas... Enhorabuena.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #19 (permalink)  
Antiguo 05/04/2006, 11:29
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
No termino de encontrar el fallo. Seguiré buscando, aunque el js no lo controle muy bien. Estoy aprendiendo el css y no me quiero diversificar mucho, ya que mi tiempo no me lo permite.
Estoy probando con eventos de js en css, pero los libros que tengo se quedan un poco cortos. Hay alguna pagina que hable del tema?

Me alegro que te guste la pagina. Es dificil conseguir un diseño si no controlas bien las herramientas. Cuando consiga que funcione todo el codigo terminare de posicionar bien las imagenes y capas.

Por cierto, hacia tiempo que no entraba en foros y veo que sigue imperando el mismo espiritu de compartir que en los inicios de Internet. Gracias a todos por lo que aportais y si puedo aportaros yo algo, aqui me teneis.

Gracias Caricato, si alguna vez me paso por Torremolinos, me encantaria que me hicieses una de tus graciosas caricaturas.

saludos
  #20 (permalink)  
Antiguo 05/04/2006, 11:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
¡Je, je!

Bueno, las caricaturas las hago en Benalmádena (Torremolinos es donde vivo)

Seguro que pronto vas a solucionar tu problema... míralo con calma, y verás que puedes...

Nuestro "tipo de página" requiere más mimo porque debemos cuidar más la estética (la que nos parezca a nosotros) y las imágenes dan más trabajo (tardan en cargarse, las dimensiones deben ser las adecuadas...)

Tómalo con calma y procura ir apendiendo.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #21 (permalink)  
Antiguo 05/04/2006, 12:11
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
preguntanba por css sin darme un paseo por las faq de css. Solo veo tu nombre. Ya veo que controlas del tema. Me pondre a estudiar.

Solo una pregunta sencillita que no encuentro por ningun lado.

si hago una capa de 10px de ancho con borde de 1 px a cada lado:
-el contenido de la capa se reduce a 8 px o el tamaño aumenta a 12.

Este tema siempre me ha condicionado a la hora de posicionar las capas exactamente.

saludos
  #22 (permalink)  
Antiguo 05/04/2006, 12: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
Bueno. lo de las FAQs, es que me encargo del índice (no es que sepa tanto)

Sobre el tema que preguntas, posiblemente el tamaño del contenido "fastidie" la maquetación... el estilo overflow: hidden en ocasiones resuelven el problema.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #23 (permalink)  
Antiguo 05/04/2006, 16:25
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
Lo voy consiguiendo. Si ves la pagina, veras que todo funciona pero la capa central, donde va la foto principal, no se ve. Esta capa esta definida cono visibililty: hidden y no consigo hacerla visible en el script con document.getElementById("capaCentral").style.displ ay = "";
¿alguna idea?

saludos
  #24 (permalink)  
Antiguo 06/04/2006, 01:47
 
Fecha de Ingreso: abril-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes
Puntos: 0
Al final lo he conseguido. Consegui ver la capa con document.getElementById("capaCentral").style.visib ility = "visible";

saludos
  #25 (permalink)  
Antiguo 06/04/2006, 02:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Enhorabuena

Me alegro y vuelvo a felicitarte por la página.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 07:46.