Ir al contenido


Foto

¿Mi aplicación se frisa al tratar de hacer un while ?


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 08 diciembre 2010 - 09:54

Hola amigos , espero que estén bien, en primer lugar tengo un problema con un pequeño juego amistoso que estoy realizando y cómo Delphi no acepta imágenes animadas como GIF , entonces tengo que hacer cambios de imagen para simular una especie de movimiento , un ejemplo


delphi
  1. procedure caminar();
  2. begin
  3. while key=vk_right do
  4. image1.visible:=false;
  5. image2.visible:=true;
  6. sleep(100);
  7. image2.visible:=false;
  8. image3.visible:=true;
  9. sleep(100)
  10. end;


Ese pequeño fragmento de código es un ejemplo más o menos algo inventado pero cuando hago esto el programa se frisa y no realiza nada osea quiero simular que mi personaje camina, al dejar presionada la tecla de la derecha por ejemplo , gracias de antemano.
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 diciembre 2010 - 10:06

para que funcione deberas ponerlo en el onkeydown del form, colocar la propiedad KeyPreview en true.  y te falto un begin end




delphi
  1. while key=vk_right do
  2. begin
  3.   image1.visible:=false;
  4.   image2.visible:=true;
  5.   sleep(100);
  6.   image2.visible:=false;
  7.   image3.visible:=true;
  8.   sleep(100)
  9. end;


  • 0

#3 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 08 diciembre 2010 - 10:47

para que funcione deberas ponerlo en el onkeydown del form, colocar la propiedad KeyPreview en true.  y te falto un begin end




delphi
  1. while key=vk_right do
  2. begin
  3.   image1.visible:=false;
  4.   image2.visible:=true;
  5.   sleep(100);
  6.   image2.visible:=false;
  7.   image3.visible:=true;
  8.   sleep(100)
  9. end;


Si lo sé eduarcol, lo usé en keydown funciona pero se frisa, pero no hay problema ya lo solucione usando un timer,gracias.
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 diciembre 2010 - 10:51

Perdon, olvide que debes quitar el while.
  • 0

#5 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 08 diciembre 2010 - 12:19

Buenas,

Como dice eduarcol, no debes usar un while, pero sí un if, sino te lo haría por cada una de las teclas pulsadas ;)



delphi
  1. if key=vk_right then
  2. begin
  3.   image1.visible:=false;
  4.   image2.visible:=true;
  5.   sleep(100);
  6.   image2.visible:=false;
  7.   image3.visible:=true;
  8.   sleep(100)
  9. end;



Nos leemos

  • 0




IP.Board spam blocked by CleanTalk.