touchScreen en Android, deberíamos hablar del tema?
Posted: Thu Jan 28, 2016 5:44 pm
by erkosone
Hola gente, no se si teneis o no idea sobre este tema, el caso es que hay muchas maneras de usar el touchScreen.. pero lo que yo espero de Gemix es que tenga integrados los modulos JOY y MOUSE con el touchScreen ya nativo.
Hay algo pensado sobre esto? Hablamos sobre el tema? por que parece facil pero en realidad hacerlo bien es mucho mas complejo de lo que parece.
Lo que quiero decir es que poner en la pantalla una cruceta y mirar si se hace colisión con alguno de los dedos es muy sencillo, pero sinceramente eso es una basura. Espero que exista un motor interno que filtre si es un finger "a la izquierda de la pantalla" o "a la derecha de la pantalla", y que el modulo JOY esté integrado de base, además de la detección de movimientos y todo eso.
Bueno, que opinais sobre el tema? está esto controlado o lo comentamos para ir haciendonos a la idea de que vamos a tener y como va a ser?
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Thu Jan 28, 2016 7:22 pm
by CicTec
Hola erkos,
El tema es interesante, aunque tenga alguna idea sobre el sistema, esta muy por encima, asi que escuchar opiniones, ideas y preferencias de la comunidad sobre cual sistema tener, lo veo bastante bien.
Adelante con las ideas, a ver como veis el sistema de touch ideal.
Re: touchScreen en Android, deberíamos hablar del tema?
STRUCT DEDOS[9]; int cord_x; int cord_y; si_se_toco_pantalla = true/false; END
quizas se me escape, pero es posible añadir un valor de RADIO de accion a estos toques de pantalla? tendria mucho sentido? quizas me equivoque, o creo averlo visto que detecta la "presion" del dedo al pulsar y el radio de accion cambia.... o eso son los touchpads de los portatiles.
esta aplicacion bien sencilla para el testeo: https://play.google.com/store/apps/deta ... zer2&hl=es probando la aplicacion, EXISTE el RADIO de presion del dedo!!!, no es lo mismo tocarlo, al minimo, que pulsar fuerte casi toda la llema del dedo. existe un radio mino y maximo!!
STRUCT DEDOS[9]; int cord_x; int cord_y; si_se_toco_pantalla = true/false; int radio_presion; END
podemos hacer esas pruebas, antes con el touchpad de los portatiles, son multi dedos a la vez...
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Thu Jan 28, 2016 9:30 pm
by SimulatorOne
Con los sensores.... Buf hay de todo... Muchos variables se mueven.
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Thu Jan 28, 2016 11:10 pm
by erkosone
Bueno, la cosa no es tan sencilla como parece, si que es sencilla si se plantea desde un punto de vista RAW que cada cual haga lo que quiera con la información de los punteros en pantalla.. pero eso es muy cutre, creo que hace falta un modulo que simplifique ciertas cosas y un modulo especialmente diseñado para android que sea el JOY.
Este tema lo tengo muy reciente, hoy mismo he terminado mi librería mod_joy para mi propio engine en android, por eso comento esto, por que parece que va a ser coser y cantar pero no..
La cosa va así en realidad: - Cuando el listener de eventos de pantalla tactil detecta que hay uno o mas punteros activos.. se crea una llamada a una función prediseñada en android que es para procesar este evento, desde esa función se puede hacer lo que se quiera, pero sobre todo lo que se hace es acceder al "array dinamico" de "dedos" que hay en ese momento en pantalla.
Y es ahi donde está lo interesante, me remito a una conversación muy similar a esta que ya tuvimos aquí mismo hace 5 años sobre el mismo tema. Mi idea de "joy perfecto" para juegos en Android es el joy que tiene implementado el juego Final Fantasy III en iOS, es sencillamente perfecto.
Explico como funciona: - La pantalla se divide en dos partes, la mitad izquierda y la mitad derecha, en la mitad derecha se detectan pulsaciones como botones o cosas así.. y en la mitad izquierda lo que sucede es que cuando el sistema detecta un pointer que "aparece" en esa zona de la pantalla.. automaticamente recoje su fingerId o pointerId o como quieran llamarlo, osea.. los punteros además de venirnos en un array de tamaño variable a cada frame del juego.. no son simples vectores, si no que son objetos algo mas complejos y tienen información como su ID, su X, su Y, y el tipo de evento que han producido en su ultimo frame. eventos hay del tipo "dedo levantado" "dedo bajado" "dedo movido" etc etc..
Entonces y resumiendo, cuando se toca la parte izquierda de la pantalla hay que hacer esto:
Existe el joy en este momento? si -> es un click de boton.. no -> es un joy.. - Si es un joy se captura el ID del puntero y lo que se hace es vincular los datos X, Y, al joy.. - en este punto el joy recibe su posición en pantalla que no es otra que la posición donde se ha pulsado con el dedo. - y apartir de aquí el centro del joy "la bola que junta los axis X/Y" se mueve siguiendo al dedo, pero el centro del joy se queda fijo hasta que ese IDdedo desaparezca del array..
- midiendo dx y dy entre el centro del joy y el vector del dedo se sabe el valor "analogico" de los dos ejes, y haciendo un switch/case con varios angulos se saben las posiciones digitales HAT.
Yo tengo esto hecho en java y es simplemente perfecto para juegos, es cómodo y deja jugar a cualquier juego sin tener que pulsar sobre esos cutres cuadraditos ...
Si alguien está interesado le puedo pasar el apk de mi engine con un simple test del joyOnScreen para que se vea mejor el concepto.
Que os parece vincular en android el modulo del joy directamente al touchScreen mediante este sistema?
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Thu Jan 28, 2016 11:25 pm
by Nowy
Creo que te he entendido erkosone, por ejemplo si yo pulso en la parte izquierda de la pantalla en cualquier lado y deslizo hacia la izquierda el evento sera mover izquierda y si luego deslizo hacia arriba pues sera izquierda y arriba. Cada vez que toco la pantalla creo un centro virtual del joy por asi decirlo, si primero pulse en el centro y luego me desplace hacia la derecha el evento sera ir derecha por poner un ejemplo, hasta que o vuelva al centro del joy virtual(donde primero se toco) o bien deje de tocar, parece un metodo interesante .
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Fri Jan 29, 2016 12:07 am
by erkosone
Tocas y desplazas a la izquierda -> joy.left = true Sueltas y tocas, desplazas arriba -> joy.up = true; Tocas y desplazas en diagonal arriba/izquierda -> mode A "joy.left = true & joy.up = true" -> mode B " en funcion del angulo entre el centro y el dedo solo UP o LEFT pueden ser true ".
Osea, tocas a la izquierda y el joy se hace presente, justo sin soltar mueves el dedo y todo depende de la distancia entre el centro y el dedo y el angulo que forman.
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Fri Jan 29, 2016 12:10 am
by Nowy
pero pensando, esto se podria hacer directamente desde el codigo en gemix asi es mas personalizable, no ?
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Fri Jan 29, 2016 1:01 am
by erkosone
Si, se puede, pero creo que al final todos vamos a necesitar un joy en los juegos, si no en un juego pues en otro, y bueno, teniendo en cuenta que el modulo JOY es un modulo que no ha cambiado en años.. pues creo que quizá seria buena idea ampliar/modificar el modulo nativo JOY del lenguaje para que haga esto ya de forma predeterminada. Aunque si, haciendo uso del propio código gemix se podría llegar a hacer sin mucho problema.
Re: touchScreen en Android, deberíamos hablar del tema?
Posted: Fri Jan 29, 2016 7:09 am
by SimulatorOne
no se me pasaria por la caveza usarlo como JOY se ve muy complicado
me esperaba una struct nueva solo para Touchscreen, un modulo dedicado para ello. como explique anterior mente es muchisimo mas sencillo y directo. obtener las cordenadas xy a tiempo real, como si fuese de varios mouse. y se pulsa la pantalla o no, y si se desea el radio/"presion" de accion que hace, simplemente es una variable.
ya dije, una buena practica es con el touchpad de los portatiles, que soportan mas de un dedo a la vez. antes de portarlo para android y sus touchscreens.