Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[ARREGLADO] Falla el keystate??

Iniciado por Kolham, 04 de Julio de 2007, 09:35:41 PM

« anterior - próximo »

Kolham

Al hacer:

if (CRM32Pro.keystate[SDLK_w])
...

Me da error (de acceso a memoria).

¿Es un bug o es que yo toy haciéndolo mal?

TheAzazel

uhm... me da que lo que haces mal es utilizar CRM32Pro.keystate antes de llamar a CRM32Pro.Update() que es quien lo actualiza.

Comprueba que al menos, lo has llamado una vez aunque claro, si no lo llamas en cada update...tendra el valor de las teclas anteriores

Kolham

Incluso poniendo antes el Update...falla. De hecho, tu juego del SpacePong tiene el Update después de llamar a keystate ¿no?.

TheAzazel

eso es bastante raro...fijate que en el SpacePong lo llama antes...en el bucle del menu.
El problema es que CRM32Pro.keystate valdra NULL si no se llama antes a CRM32Pro.Update().
De todos modos he revisado los code path de .Update() y puede existir un bug en ello, si estas pasando un SDL_Event a .Update() se puede dar el caso de que te devuelva un evento PERO aun no ha activado .keystate.
Si este es tu caso... con comprobar que .keystate es != NULL lo solucionaras por el momento. De todos modos creo que en vez de acceder directamente a .keystate, añadire un miembro que lo haga y en caso de error que no pete.
Mira a ver si te ayuda esto. Esa mejora ira para la 4.98 que esta en plena cocion jejeje

Kolham

Así es, solucionado ;). Efectivamente también paso al Update un SDL_Event. Solucionado queda comprobando que keystate no sea NULL.

Gracias :).

TheAzazel

ok, gracias por reportar ese problemilla.
Lo que hare sera agregar un metodo que obtenga el keystate y asi, te quitas de andar haciendo comprobaciones :)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.