Programación de Juegos para Android

Programación de Juegos para Android 12: Eventos de entrada InputProcessors

42 videos

238 minutos

Finalmente para asociar este adapter o este procesador que hayamos creado según nos interese, lo único que debemos hacer es, en el juego principal, en el momento que queramos asociarlo, construir la instancia del procesador, por ejemplo con procesador = new Procesador(), y pedirle a libGDX que use el procesador para gestionar esos eventos, con una llamada a Gdx.input.setInputProcessor(). Cuando empecemos a hacer nuestro juego con Scene2D

es importante que nos acordemos de esta línea, porque Scene2D trae su propio procesador para tratar la entrada, así que tendremos que acordarnos de poner esa línea, os lo explicaré en su momento. Lo importante es que cuando hagamos la llamada a setInputProccesor, a partir de ese momento libGDX redirigirá todas las llamadas que se hagan o todos los eventos que ocurran respecto a entrada, como tocar la pantalla o pulsar una tecla,

hacia la clase que le hayamos pasado como parámetro. Y en este caso la clase tiene que ser o un InputProcessor o un InputAdapter. Con eso adquirimos la ventaja de que en nuestro juego no tenemos que perder tiempo comprobando si estamos pulsando una tecla o no, y que todos los eventos se tratan de forma asíncrona sin afectar a la capacidad de ejecución de nuestro juego. Todo se hace de forma paralela y sin ningún tipo de problema.

Lo único que tenemos que tener en cuenta, no obstante, es que si vamos a usar este sistema, cuando tengamos que controlar objetos o cuando tengamos que controlar otras clases, de alguna forma es necesario que el procesador conozca esas instancias para que pueda manipularlo. Al margen de ello con esto se puede tratar. Por ejemplo, en el caso de este código que teníamos aquí creado, la principal característica es que ahora

cuando toquemos la pantalla, que es algo que vamos a hacer extensamente a partir del momento en el que creemos el juego, podemos obtener el mensaje en pantalla que dice que hemos pulsado un botón, el izquierdo porque es el que he pulsado, pero si pulso el derecho me dice que es el 1 o el central, el 2. En particular esto se repite para cada uno de los métodos que tengamos. Lo único, es importante que se devuelva true si lo hemos procesado. Parece una tontería

pero si en touchDown hago un return false y trato mi evento en el touchUp, debido a que touchUp ocurre al levantar el dedo y touchDown al pulsarlo, al haberle dado aquí false no se va a tratar el touchUp. Sed coherentes con lo que hacéis, si tenéis que tratar un touchUp, tratad antes el touchDown. Aunque sólo hagáis un return true. Pero si el down devuelve falso, el up no va a poder ejecutarse, porque va a considerar que no es necesario

si no ha sido tratado el down. Ya sabéis, siempre usad esto. Para cualquiera de los métodos que tengamos, como scrolled, que indica si hemos pulsado la rueda del ratón. Con todos ellos es importante. De todos modos cuando empecemos a hacer el juego en Scene2D, normalmente va a abstraerlo lo suficiente bien como para que no tengamos que usar procesadores, usaremos otra clase que se parece a un procesador pero que no es igual. Le pasamos eventos y

nos comprueba, y le decimos si lo hemos tratado o no. Pero si hacemos algo así básico, y no se me ocurría otra forma mejor de explicarlo para hacer por separado, es una cosa a tener en cuenta.

Si quieres enterarte de los nuevos cursos, suscríbete. No habrá spam, prometido :)

Sobre el autor

foto de jotajotavm
José Javier Villena

jotajota pa los amigos y jota pa los de más cnfianza.

Bio Seria: Analista-Programador en diferentes lenguajes. Tutor PREMIUM de reconocidas plataformas de nivel mundial como CodigoFacilito. Redactor de artículos para Cristalab. Mi canal de YouTube está patrocinado por la editorial ANAYA y LaTostadora. Me gusta explicar con detalle y poner varios ejemplos para que no queden dudas.

Bio Molona: Me presento :) soy informatico, ni frostis d hardware pero muy muxo de programacion, friki a medias o del to segun el dia. Me gusta programar, muxo. Manejo varios lenguajes y tdo lo ke sepa lo comparto x amor al arte. Este no es mi trabjo pero lo ago mejor y con +ganas y calidad que si lo fuera, x eso mismo, xq para mi es divertido. Solo spero al menos algo de agradecimientO!! ;)

Dios, qe gusto haber escrito este parrafo cm me a dao la gana sin pensar en ortografia ni tildes ni historias!!!!!