Establecer tiempo entre imagenes SDL

Consulte acerca de programas, técnicas, algoritmos etc.

Establecer tiempo entre imagenes SDL

Notapor Max03 » Jue Ago 09, 2012 1:31 pm

Hola, tengo un juego en C++ y SDL en el que un sprite está compuesto por dos imágenes y necesito establecer cierto tiempo entre ambas para que cuando pulse la tecla de movimiento, la imágen del personaje quieto y la de cuando mueve la pierna se vean con cierto tiempo entre ambas, ya que sin tiempo entre ellas, parpadean ambas en la pantalla sin lógica. El echo es que creo haber visto que se puede usar SDL_GetTicks, pero no se si este detiene todas las operaciones del juego o no.
Alguien sabe como puedo hacer que este sprite con dos imágenes se vea con tiempo entre ambas? También me interesaría saber si hay alguna otra forma posible que valga la pena.
Sería de agradecer algun ejemplo usando SDL_GetTicks, para establecer el tiempo entre el sprite formado por dos imágenes que empiezan a moverse al pulsar una tecla.
Gracias y Saludos. :D
Max03
 
Mensajes: 1
Registrado: Mar Ago 07, 2012 2:45 pm

Re: Establecer tiempo entre imagenes SDL

Notapor Barajas » Vie Ago 10, 2012 12:56 am

Max03 escribió:un sprite está compuesto por dos imágenes y necesito establecer cierto tiempo entre ambas para que cuando pulse la tecla de movimiento, la imágen del personaje quieto y la de cuando mueve la pierna se vean con cierto tiempo entre ambas, ya que sin tiempo entre ellas, parpadean ambas en la pantalla sin lógica.

No entiendo muy bien lo que quieres decir, ¿Podrías ser un poco mas claro? :)

Bueno, si te refieres a la animación, esta clase te puede ser útil:

//Aquí la clase
class Aniframe{
int frame;
int inicio;
float delay;
int ultima_act;
int * lista_anima;
int largo;
public:
Aniframe(int * l){
frame = 0;
inicio = SDL_GetTicks();
delay = 1000/15;
ultima_act = 0; //ultima
lista_anima = l;
/*
int *IntPtr = &lista_anima[0];
while( *IntPtr >= 0 ){
IntPtr++;
largo++;
};*/
largo = 0;
while(lista_anima[largo]>=0){
largo++;
};
};
~Aniframe(){};
int Frame_es(bool Reset = 0){
if (Reset){
this->frame = 0;
};
if ((SDL_GetTicks() - this->ultima_act) > this->delay){
this->frame ++;
if (this->frame >= this->largo){
this->frame = 0;
}
this->ultima_act = SDL_GetTicks();
};
return lista_anima[this->frame];
};
};


Por ejemplo, imagina que tienes una lista de las imágenes que utilizas, y estas tienen una animación entre ellas, asi que un ejemplo de su uso seria:

//tengo un array de Surfaces, o rectas... bueno...
int animacion[] = {1,2,1,2,1,2,-1}; //creo un array del numero de las imágenes que utilizare
//creo el objeto
Aniframe anima = Aniframe(animacion);

//estamos en el bucle del juego...
mi_imagen_actual = mi_lista_de_imagenes[ anima.Frame_es() ]


pero no creo que esto sea lo que buscas... :roll:
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron