Forma de cargar una 'animación'

Esstoy estudiando informatica y programacion en delphi y nos han mandado como proyecto final hacer un juego en dicho programa, y yo he elegido simular una batalla entre dos personajes. Pero tengo una duda respecto a como animar a los personajes. He empezado a hacerlo creando un cuadro imagen para cada imagen o sprites del personaje y luego hacerla visible e invisible con refresh y sleeps de la siguiente forma. Por ejemplo para simular que el personaje lanza un fogonazo:
      Fuego1.Visible:=true;
      Fuego1.refresh;
      Sleep(170);
      Fuego1.visible:=false;
      Fuego2.Visible:=true;
      Fuego2.refresh;
      Sleep(90);
      Fuego2.visible:=false;
      Fuego3.Visible:=true;
      Fuego3.refresh;
      Sleep(60);
      Fuego3.visible:=false;
No se que me da que esta es la versión cutre de hacerlo, ;) porque de vez en cuando, la imagen se entrecorta o simplemente se queda pensando y hasta que no 'acaba' mi animación, no vuelven a aparecer las cosas, ademas que si quiero que dos animaciones distintas salgan a la vez, las he de intercalar en el código. Por eso pregunto la forma correcta de dar movimientos a imágenes (tipo a los gifs), y sino sigo haciéndolo así, pero ya digo que me da el problema de que de vez en cuando se cuelga hasta que pasan todos los sleeps o se entrecortan las imágenes...

1 respuesta

Respuesta
1
Cutre cutre, tu problema es que quieres hacer una aplicación que requiere un uso intensivo del modo gráfico pero utilizando objetos para formularios, algo así como intentar una aperación a corazón abierto utilizando cubiertos de ensalada...
Como programa para aprender y demás no está mal, pero mi consejo es uses un canvas y "dibujes" los personajes, imagina la pantalla no como objetos independientes, sino como una fotografía, un fotograma de una película, tu programa "pintará" cada fotograma y cuando esté listo lo muestra, haciendo un refresh del canvas, con eso evitarás cortes, parpadeos y demás historias, puedes cargar directamente bmp's y creo recordar que permite los colores transparentes (defines como color transparente el rojo fuxia que no se usa casi nunca y arreglado todos tus sprites deberán tener ese color como fondo luego al mostrarlo ese color el canvas no lo pinta, voila perfiles no cuadriculados ) no es la mejor forma, pero no te aconsejo meterte con buffers z y esas historias porque no acabarías en un año...
Si te propones hacer algo más allá de un simple programa 'proyecto' te hecharía una mano, depurando código, proponiendo cosas, etc
Ajá, jo lo malo es que ya lo tengo casi terminado del modo de visible true/false XD... De todas formas, eso del canvas, es un componente o se programa por código, ¿qué le dice la ruta de la imagen que cargue y tal...? Es que he buscado por ahí, pero no me aclaro del todo... Podrías poner un pequeño ejemplo, ¿si no es molestia? XD
No te rías que es el trabajo de toda una "tarde" xDD
<a href="http://abetop.fileave.com/ejemplo.zip">
http://abetop.fileave.com/ejemplo.zip
</a>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas