BASIC

Author Topic: ZONES()  (Read 2232 times)

Offline ampos

  • Prof. Inline
  • *****
  • Posts: 1594
    • View Profile
    • AMpostata Website
ZONES()
« 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?
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

Offline msx

  • Prof. Inline
  • *****
  • Posts: 773
    • View Profile
Re: ZONES()
« Reply #1 on: 2011-Sep-20 »
¿Cómo usas ésto en el redimensionado de la pantalla para adaptarlo a todos los dispositivos?

Offline ampos

  • Prof. Inline
  • *****
  • Posts: 1594
    • View Profile
    • AMpostata Website
Re: ZONES()
« Reply #2 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.
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

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3366
  • Integrated Brain
    • View Profile
Re: ZONES()
« Reply #3 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.

Offline ampos

  • Prof. Inline
  • *****
  • Posts: 1594
    • View Profile
    • AMpostata Website
Re: ZONES()
« Reply #4 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...
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

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3366
  • Integrated Brain
    • View Profile
Re: ZONES()
« Reply #5 on: 2011-Sep-20 »
No si te lo digo para que lo sepas, de momento no lo usaré.

Offline chve

  • Mr. Drawsprite
  • **
  • Posts: 65
    • View Profile
Re: ZONES()
« Reply #6 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!!  ;)