Ver la versión completa : ¿Repeticion de movimientos con el joystick?
Muy buenas, estoy tratando de portar mis juegos y la cosa esta chunga, ¿como hago para que el mando me detecte que lo mantengo pulsado ?(ir hacia adelante)
Tengo el codigo tal que asi, pero solo detecta cada pulsacion individual y el enablekeyrepeat no sirve para el joystick
while( SDL_PollEvent( &evento ) )
{
if(evento.type==SDL_QUIT)
{
terminar=1;
}
if (evento.type == SDL_JOYBUTTONDOWN) {
if (evento.jbutton.button == GP2X_BUTTON_SELECT)
{
terminar=1;
Mix_HaltMusic();
}
if (evento.jbutton.button == GP2X_BUTTON_RIGHT)
{
MovimientoDerecha();
}
if (evento.jbutton.button == GP2X_BUTTON_LEFT)
{
MovimientoIzquierda();
}
if (evento.jbutton.button == GP2X_BUTTON_UP)
{
MovimientoArriba();
}
if (evento.jbutton.button == GP2X_BUTTON_DOWN)
{
MovimientoAbajo();
}
¿Que hago mal? o ¿que me falta poner?
Puck2099
05/05/2006, 19:52
No haces nada mal, pero como tú dices, al usar los JOYBUTTONDOWN solo te va a detectar un evento cada vez que pase un botón de estado no pulsado a pulsado.
Prueba con algo así:
.....
if (SDL_JoyGetButton(Joystick, GP2X_BUTTON_RIGHT)) MovimientoDerecha();
if (SDL_JoyGetButton(Joystick, GP2X_BUTTON_LEFT)) MovimientoIzquierda();
....
Ahora mismo, sin probarlo, se me ocurre algo así (algo chapuzero, si xD):
[...]
if (evento.jbutton.button == GP2X_BUTTON_RIGHT)
{
do
{
MovimientoDerecha();
}
while (evento.jbutton.state == SDL_PRESSED);
}
En realidad esto habría que controlarlo mejor (yo acostumbro a tirar más de switch que de if encadenados), pero la idea que se me ha ocurrido es que podrías controlar el valor del miembro state (SDL_PRESSED cuando el botón está presionado y SDL_RELEASED cuando se ha dejado de pulsar) de la estructura SDL_JoyButtonEvent (por jbutton, de la unió SDL_Event) y repetir en un bucle la acción de la función mientras que el estado del botón sea que esté pulsado.
P.D: Acabo de ver la solución de Puck, posiblemente más sencilla si está encerrada en un bucle while controlando el evento type con valor SDL_JOYBUTTONDOWN o algo similar.
Voy a probar las 2 soluciones a ver cuala me apaña mas de las dos. ¿A que velocidad va la consola con el firm 2.0 por defecto?
Puck2099
05/05/2006, 20:10
P.D: Acabo de ver la solución de Puck, posiblemente más sencilla si está encerrada en un bucle while controlando el evento type con valor SDL_JOYBUTTONDOWN o algo similar.
No, la gracia está en que vaya sin eventos SDL_JOYBUTTONDOWN ni nada así, meter eso tal cual en el bucle principal (controlando con una variable que se decremente o algo así para que se ejecute cada cierto tiempo) y ya está :)
Si necesitáis más os pego algún código del LK o algo :)
Saludos
¿A que velocidad va la consola con el firm 2.0 por defecto?Si no ha cambiado creo que a 200 MHz cuando se sale del menú.
Si necesitáis más os pego algún código del LK o algo :)
Saludos
Peganos, maltratanos, estooooo digo pon codigo pq con esto del joystick no me aclaro, claro q por otro lado no lo he usado en mi vida
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.