ZONES()

Previous topic - Next topic

ampos

¿Alguna pregunta sobre mi librería ZONES()?

http://www.glbasic.com/forum/index.php?topic=5186.0

Realmente es la mejor librería de las pocas cosas que he creado.

Básicamente creas zonas rectangulares (con createzone) con un numero (id).

Luego le preguntas a la librería "¿que zona hay bajo el cursor?" y te la dice (0 es ninguna). Es un "must" si tienes algún interface de usuario por la facilidad de control de los botones.

Primero creas unas cuantas zonas:

Code (glbasic) Select
createzone(1,0,0,100,100)   //createzone (id,x,y,ancho,alto)
createzone(2,150,0,100,100)


Y luego en el loop principal pones

Code (glbasic) Select
mousestate mx,my,b1,b2
z=zone(mx,my)


Si Z=0 el cursor no está sobre ninguna zona, si Z=1 sobre la zona 2 y así.

En el PC podemos poner el cursor sobre una zona sin pulsar el ratón, pero en los cacharritos, ambas cosas van juntas: si no pulsas, no hay coordenadas. Para simularel funcionamiento de un touchscreen en el PC, habría que poner

Code (glbasic) Select
mousestate mx,my,b1,b2
z=zone(mx,my)*b1


Z sólo nos devolvería un valor distinto de cero si pulsamos el ratón, igualico que una pantalla táctil o un iphone.

¿Preguntas?
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

msx

¿Cómo usas ésto en el redimensionado de la pantalla para adaptarlo a todos los dispositivos?

ampos

Tengo 2 funciones, CREATEZONE y CREATEZONE_ABS

Primero tenía solo createzone() que creaba zonas con los valores que le dieses. Luego la adapté para que al mandar crear las zonas se autoadaptara al tamaño de la pantalla, y conservé la función anterior renombrándola como _abs.

En el teclao virtual por ejemplo, uso la ABS pese a que la pantalla es autoadaptativa, porque el teclao aprovecha la pantalla del device entera, independientemente de lo que diga la función sc().

Si usas el método de crear a 1024x640, crea las zonas con la normal. Si usas tu propio sistema, usa la ABS.

Aconsejo crear una funcion sc() aunque solo contenga esto:

Code (glbasic) Select
function sc:
   if mouseaxis(4)=1 then showzones()
   showscreen
endfunction


Y llamarla siempre en vez de showscreen. Esto hace que puedas ver las zonas pulsando el derecho del ratón, cosa indispensable para depurar. Y como los cacharros no tienen boton derecho, no estorba.
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

mentalthink

Pues la probaré Ampos.

Por otro lado ayer probe tú libreria IMPUT, pero en el Palm Pre no iba demasiado bien, por el tema que las letras no se veían debido al pequeño tamaño... no sé, quizás pasa algo con las fuentes, o realmente no está pensado para este dispositivo , aunque comentabas que era para cualquiera.

Un saludo.
Iván J.

ampos

Yo lo probé en el Pre2 e iba mu bien... Cambia la fuente a otra más gorda si te parece mejor...
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

mentalthink

No si te lo digo para que lo sepas, de momento no lo usaré.

chve

Pues estuve ayer un rato probando tu libreria, ampos y no me funcionaba bien.  :rant:

Pero ya hoy di con la clave y usando la function CreateZoneAbs() en vez de CreateZone( )  y cambiando alguna variable a Global y funciona perfecta con mi free version!!!  :good:
Le añadi algunas cosillas y el puntero del raton como sprite.

Es muy util  y flexible y la guardo para cuando me haga falta     :enc:

Muchas gracias!!  ;)