martes, 22 de abril de 2014

Multitouch - CoronaLabs

Hola gente!

Andamos preparando la siguiente app, y me encontré con un problema, ¿como poder hacer click al mismo tiempo a dos botones diferentes?

NOTA: Para poder saber si tu aplicación acepta el multitouch, es necesario probar la aplicación en el celular.

Pasemos al código:

Primero creemos nuestros 2 botones:

 local widget = require( "widget" )  
 local button1 = widget.newButton  
 {  
   left = 100,  
   top = 200,  
   id = "button1",  
   label = "Boton1",  
   onEvent = handleButtonEvent  
 }  
 local button2 = widget.newButton  
 {  
   left = 200,  
   top = 200,  
   id = "button2",  
   label = "Boton2",  
   onEvent = handleButtonEvent  
 }  

Con estas lineas creamos el código necesario para visualizar dos botones, a los cuales al darle click mandamos llamar a la función handleButtonEvent, la cual es la siguiente:

 local function handleButtonEvent( event )  
   if ( "ended" == event.phase ) then  
    print( event.target.id .. "was pressed")    
   end  
 end  

Esta función es mandada llamar en diferentes eventos del botón, pero nosotros preguntamos si la fase a la que mandaron llamar es la de acabada y con esto nos damos cuenta que el usuario dio click y ya retiro el dedo del botón, dando como resultado el mostrar en consola el nombre del botón que fue presionado.

Pero ¿como mostrar al usuario que presiono el botón?,  vamos a crear dos variables,llamadas cont1 y cont2, las cuales contendrán el número de veces que la persona a presionado el botón, y crearemos dos variables más para mostrar el numero de veces que han presionado el boton1 o el boton2.

 local cont1 = 0  
 local cont2 = 0  
 local myTextCont1 = display.newText( "hello", 100, 200, native.systemFontBold, 12 )  
 myTextCont1:setFillColor( 1, 0, 0.5 )  
 local myTextCont2 = display.newText( "hello", 200, 200, native.systemFontBold, 12 )  
 myTextCont2:setFillColor( 1, 0, 0.5 )  

Como podemos ver, las variables por el momento solo muestran un texto de hello, pero éste puede ser modificado de manera dinámica por medio de nuestra función handleButtonEvent. Esta función quedaría de la siguiente manera:

 local function handleButtonEvent( event )  
   if ( "ended" == event.phase ) then  
     if(event.target.id == "button1") then  
          cont1=cont1+1  
          myTextCont1.text = cont1  
          else  
          cont2= cont2+1  
          myTextCont2.text = cont2  
     end  
 print( "Button1 was=" .. cont1 .."button2 was =".. cont2 .. "event target id =".. event.target.id )  
   end  
 end  

Como pueden ver, podemos cambiar el texto de la variable accesando con el nombreDeVariable.text.

Si nosotros probamos la aplicación en el celular, podremos ver que no funcionan los botones al mismo tiempo, y esto es por que por default, se tiene desactivada esta funcionalidad. Para activarla agregamos la siguiente linea de código en la parte superior de nuestro main y ¡wala!.

 system.activate("multitouch")  

Para aquellos que no quiere explicación y quieren código para probar, les mando en el siguiente link los archivos de código fuente que se utilizaron.
Código fuente.
APP DEMO.

Recomendaciones y sugerencias, deja tu comentario, saludos y GG!


No hay comentarios:

Publicar un comentario