GLBasic forum

Other languages => GLBasic - es => Topic started by: ampos on 2011-Sep-20

Title: ZONES()
Post by: ampos on 2011-Sep-20
¿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?
Title: Re: ZONES()
Post by: msx on 2011-Sep-20
¿Cómo usas ésto en el redimensionado de la pantalla para adaptarlo a todos los dispositivos?
Title: Re: ZONES()
Post by: ampos on 2011-Sep-20
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.
Title: Re: ZONES()
Post by: mentalthink on 2011-Sep-20
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.
Title: Re: ZONES()
Post by: ampos on 2011-Sep-20
Yo lo probé en el Pre2 e iba mu bien... Cambia la fuente a otra más gorda si te parece mejor...
Title: Re: ZONES()
Post by: mentalthink on 2011-Sep-20
No si te lo digo para que lo sepas, de momento no lo usaré.
Title: Re: ZONES()
Post by: chve on 2011-Oct-22
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!!  ;)