Foros del Web » Programando para Internet » Javascript »

cargar imagenes

Estas en el tema de cargar imagenes en el foro de Javascript en Foros del Web. Hola a todos, paso a explicar lo que quiero hacer y lo que me ocurre. Estoy desarrollando un juego de ajedrez en javascript, para ello ...
  #1 (permalink)  
Antiguo 14/08/2015, 06:32
 
Fecha de Ingreso: enero-2006
Mensajes: 76
Antigüedad: 18 años, 3 meses
Puntos: 1
cargar imagenes

Hola a todos, paso a explicar lo que quiero hacer y lo que me ocurre.

Estoy desarrollando un juego de ajedrez en javascript, para ello utilizo como tablero una imagen que se pinta en un canvas, y luego las fichas son puestas encima del tablero.

El problema es que son imágenes png con transparencia, lo cual las hace muy pesadas (no bajan de los 200 bits), y como al inicio de la partida, se tiene que cargar todo por primera vez, a veces no me aparecen todas las fichas.


os paso el código para que veais como lo hago y si se puede mejorar o hacer de otra manera mejor.

antes de nada decir que como no esta la opción de quitar una imagen aisladamente, lo que hago es borrar todo y volver a imprimir todas las imágenes denuevo.

esta funcion lo que hace es llamar a otra función, donde le paso una variable que contiene el nombre de la pieza a dibujar, y luego dos coordenadas.
Código Javascript:
Ver original
  1. //funcion para dibujar las piezas con negras
  2. function dibuja_piezasN()
  3. {
  4.     dibuja_piezaB(a1, 452, 67);
  5.     dibuja_piezaB(a2, 452, 122);
  6.     dibuja_piezaB(a3, 452, 177);
  7.     dibuja_piezaB(a4, 452, 232);
  8.     dibuja_piezaB(a5, 452, 287);
  9.         .....
  10. }


y esta es la función que pinta imagen a imagen.
todo esto se hace despues de redimensionar el canvas para borrarlo e imprimido.
Código Javascript:
Ver original
  1. //funcion que dibuja la pieza en el canvas / tablero
  2. function dibuja_piezaB(pieza, x, y)
  3. {
  4.  
  5.     var canvas = document.getElementById("myCanvas");
  6.     var ctx = canvas.getContext("2d");
  7.     var dibujo = new Image();
  8.  
  9.     if (pieza != "")
  10.     {
  11.        
  12.         var ruta=compone_ruta(pieza);
  13.         dibujo.src=ruta;
  14.        
  15.         dibujo.onload = function ()
  16.         {
  17.             ctx.drawImage(dibujo, x, y);
  18.         }
  19.     }
  20.     return;
  21. }////////////////////////////////////////////////////////

según entiendo yo, no debería de imprimir la imagen hasta que esta no esté cargada, lo que ya no sé es si de la manera que lo hago, pues se salta ese paso o simplemente es muy pesado todas las imagenes.

A veces me carga todas y otras veces faltan algunas, e incluso me ha llegado a suceder que no ha imprimido ni una sola imagen, solo el tablero.

Una vez empezado a mover, ya no falla, por lo que le hecho la culpa a la carga inicial de las imagenes.

¿alguna sugerencia?

Se me olvidaba, la ruta la compongo utilizando el nombre de la pieza, es decir, según el valor de la variable.
Saludos.

Etiquetas: imagenes, onload
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 09:07.