PDA

Ver la Versión Completa : Movimiento controlado de un TImage


raul_toled
28-02-2007, 17:18:17
Hola, estoy realizando un juego donde introduzco una secuencia de movimientos y posteriormete eso lo realice un Timage. La secuencia la voy almacenando en un memo y despues las llevo a cabo una a una lellendo cada una de las lineas del Memo. El Movimiento lo estoy intentando controlar con un Timer, pero lo que pasa es que como son secuencias seguidas comienza con la siguiente antes de terminar la que esta haciendo por lo que siempre acaba haciendo solo la ultima.

Con un for voy leyendo la secuencia y dentro del for llamo al procedimiento que se encarga de activar el Timer y hacer el movimiento.

Como puedo controlarlo de alguna forma mejor, como lo estoy haciendo no consiguo lo que quiero.

Gracias

Neftali [Germán.Estévez]
28-02-2007, 17:23:18
Tal vez deberías poner un poco de código para ilustrar la explicación, de otra forma es difícil saber cual es el error que estás cometiendo y darte una solución.
También te recomiendo que leas la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) de los foros.

Bienvenido.

delphi.com.ar
28-02-2007, 18:00:18
Con un for voy leyendo la secuencia y dentro del for llamo al procedimiento que se encarga de activar el Timer y hacer el movimiento.
Es que si tienes la concepción de que un timer es el que hace la animación, tendrías que esperar que termine la animación para indicarle la otra acción.
¿Porque no prescindes del timer?

raul_toled
04-03-2007, 12:11:25
Es que si tienes la concepción de que un timer es el que hace la animación, tendrías que esperar que termine la animación para indicarle la otra acción.
¿Porque no prescindes del timer?
Ha sido la única forma de hacer desplazarse el TImage viendo la secuencia, de otra forma el movimiento lo hace tan rápido que no se ve.

Si hay alguna forma de prescindir del timer y hacerlo consiguiendo que dueda controlar la velocidad del movimiento estaría encantado de probarlo.

Seguiré intentandolo de todas formas.

Delphius
04-03-2007, 19:35:18
raul_toled, estuve pensando en como se puede hacer lo que quieres. Y hay una manera de resolverlo sin el timer. Con la sentencia sleep() puedes indicar que se espere x milisegundos antes de continuar con la siguiente línea.
No se que guardas en el memo... ¿la ruta completa de la imagen correspondiente en la secuencia?

Si es así: podrías hacerlo con el for... nada de timer:

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i := 0 to memo1.Lines.Count - 1 do
begin
Image1.Picture.LoadFromFile(Memo1.Lines[i]);
sleep(150);
end;
end;

No se si entendí bien... pero espero haber aportado algo.
Saludos,