PDA

Ver la versión completa : Problemilla con sdl_joystickgetbutton



Eskema
01/09/2006, 10:23
Buenas gente, tengo una dudilla con la funcion getbutton, ¿como puedo saber q se ha dejado de pulsar el boton?
En pc tengo un codigo tal q asi


if(teclas[SDLK_LCTRL]) Disparo();
disparo++;

if(!teclas[SDLK_LCTRL])
disparo = 0;


De esta forma cuando suelto ctrl el disparo vuelve a 0, ¿como hago lo mismo con joystickgetbutton?



if(SDL_JoystickGetButton(joystick, GP2X_BUTTON_A)) Disparo();
disparo++;

if(!SDL_JoystickGetButton(joystick, GP2X_BUTTON_A))
disparo = 0;



De esta forma no consigo nada, es decir el A no hace nada de nada, ¿algun consejillo?



Edito: Solucionado, me habia dejado un puntero sin iniciar y por eso no respondia ;) desde luego menudo patan soy.... xD

D_Skywalk
01/09/2006, 14:30
La mejor forma de saber cuando el usuario suelta, pulsa, mantiene pulsada, etc... es comprobando los por eventos con el tipico switch :)

Quizas lo mejor para explicarlo sea un ejemplo, no?
Pues asi es como lo hago yo en abalon, a ver si te vale:

void LeerControl(void){

SDL_Event event;
/* Mirando eventos 8) */

while (SDL_PollEvent (&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
if( Event.key.keysym.sym == GP2X_BUTTON_A)
disparo();

break;
case SDL_KEYUP:
if( Event.key.keysym.sym == GP2X_BUTTON_A)
disparo = 0;
break;
default:
break;
}
}

}

Un saludo compa!
Pd: Ese code que has puesto te puede dar problemas, por que disparo valdra 0 siempre que no este pulsada "A". Quizas justo en esto de igual pero con otros movimientos quizas podria dar problemas, ya que normalmente siempre sera verdadero ( y genera un codigo mas lentorro xD)

Eskema
01/09/2006, 15:10
Un saludo compa!
Pd: Ese code que has puesto te puede dar problemas, por que disparo valdra 0 siempre que no este pulsada "A". Quizas justo en esto de igual pero con otros movimientos quizas podria dar problemas, ya que normalmente siempre sera verdadero ( y genera un codigo mas lentorro xD)


Precisamente esa es la idea del codigo q disparo valga 0 siempre q no este pulsada A. Estuve mirando la opcion de los eventos y por el momento me gusta mas el acceso directo. Eso si ya me has tocado la moral con la lentitud :teacher: ahora me costara cambiarlo y usar los eventos :risas:

D_Skywalk
01/09/2006, 17:03
Y asi sera tambien en el ejemplo de evento que te he puesto, cuando sueltas A disparo valdra 0, pero solo lo comprobara cuando sueltes la tecla, y no en cada vuelta ;)

Un Saludete :*