touchScreen en Android, deberíamos hablar del tema?

Discusión en general sobre Gemix.

touchScreen en Android, deberíamos hablar del tema?

Postby erkosone » Thu Jan 28, 2016 5:44 pm

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?
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: touchScreen en Android, deberíamos hablar del tema?

Postby CicTec » Thu Jan 28, 2016 7:22 pm

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: touchScreen en Android, deberíamos hablar del tema?

Postby SimulatorOne » Thu Jan 28, 2016 9:10 pm

lo que esta claro, que solo un dedo es igual a:
Code: Select all
int cord_x;
int cord_y;
si_se_toco_pantalla = true/false;


pero si son mas de un dedo a la vez, seria como una struct:
Code: Select all
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!!

actualizo la structura asi:
Code: Select all
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...
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: touchScreen en Android, deberíamos hablar del tema?

Postby SimulatorOne » Thu Jan 28, 2016 9:30 pm

Con los sensores.... Buf hay de todo...
Muchos variables se mueven.
You do not have the required permissions to view the files attached to this post.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Re: touchScreen en Android, deberíamos hablar del tema?

Postby erkosone » Thu Jan 28, 2016 11:10 pm

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?
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: touchScreen en Android, deberíamos hablar del tema?

Postby Nowy » Thu Jan 28, 2016 11:25 pm

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 .
User avatar
Nowy
 
Posts: 597
Joined: Sat Oct 04, 2008 11:14 am
Location: Tenerife

Re: touchScreen en Android, deberíamos hablar del tema?

Postby erkosone » Fri Jan 29, 2016 12:07 am

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.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: touchScreen en Android, deberíamos hablar del tema?

Postby Nowy » Fri Jan 29, 2016 12:10 am

pero pensando, esto se podria hacer directamente desde el codigo en gemix asi es mas personalizable, no ?
User avatar
Nowy
 
Posts: 597
Joined: Sat Oct 04, 2008 11:14 am
Location: Tenerife

Re: touchScreen en Android, deberíamos hablar del tema?

Postby erkosone » Fri Jan 29, 2016 1:01 am

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.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: touchScreen en Android, deberíamos hablar del tema?

Postby SimulatorOne » Fri Jan 29, 2016 7:09 am

no se me pasaria por la caveza usarlo como JOY :blind:
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.

Image
un ejemplo que vi:


aplicacion de testeo del video:
https://play.google.com/store/apps/deta ... m.rn.yamtt

no lo veo complicado.

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.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona

Next

Return to General

Who is online

Users browsing this forum: No registered users and 4 guests