Skip to content

Usando o multi-toque no CoronaSDK

by em 29/10/2012

Bem vindos à mais um level!

Dificuldade: 2                                Estrelas por completar: 3

O multi-toque é um facilitador de vidas nos jogos e aplicativos móveis, graças a ele temos os joguinhos com dual-sticks ou por exemplo Lili da bitmonster. Mas a pergunta fica: como uso isso no CoronaSDK?

É muito mais simples do que vocês imaginam.

No main.lua adicione uma linha de código para tivar o multi-toque.

system.activate("multitouch")

Pronto! Agora seu listener do “touch” vai receber múltiplos toques na variável event. Dentro do event a propriedade id agora está disponível para identificar os diferentes toques.

Dica da fase:
O id só permanece o mesmo para um toque durante seu ciclo de vida, ou seja, o usuário toca, move o dedo e remove o dedo da tela. Depois que o usuário remover o dedo da tela tanto o id quanto o toque deixam de existir.

“Ah mas a dica foi besta hein!”…. calma, tem um toque extra ainda (nada muito fantástico rs)

Vamos testar! Crie um projeto em branco e no seu main.lua adicione a linha citada anteriormente no topo do arquivo.

Agora crie dois botões para controlar uma bolinha que ira se mover para frente e para baixo quando estes forem pressionados. Para cada botão adicione uma variável name com um valor que identifique o botão.

local ball = display.newCircle(25,100,15)
ball:setFillColor(25, 67, 255)

local ver_btn = display.newCircle(150,220,30)
ver_btn.name = "ver"

local hor_btn = display.newCircle(300,220,30)
hor_btn.name = "hor"

Execute no simulador e você verá algo assim
exemplo_multitoque

Agora crie a função para os listener de toque e adicione aos dois botões.

function touchButton(event)
if event.target.name == "ver" then
ball.y = ball.y + 0.9
end
if event.target.name == "hor" then
ball.x = ball.x + 0.9
end
end

ver_btn:addEventListener("touch", touchButton)
hor_btn:addEventListener("touch", touchButton)
Ponto extra
Mude a direção da bolinha (+0.9/-0.9) quando atingir um limite de movimentação tanto em y quanto em x.

Ao executar no simulador você se pergunta:”Tá bom a bolinha se move mas eu não consigo tocar os dois botões ao mesmo tempo, como eu faço isso?”

Isso é um problema, não é possível fazer esse teste no simulador do corona, é preciso fazer o build e testar direto no aplicativo. Eu não me lembro se o luaglider (cider) ou o corona ultimote fazem algo a respeito disso mas vale a pena checar.

Dica da fase:
Se você utiliza algum joystick que trabalha com enterFrame de uma forma que trave seus toques faça com que a ação desses toques aconteça também no enterFrame. Resumindo guarde a ação quando o usuário tocar na tela e a execute no enterFrame.

Fase completa!
Parabéns você tem 3 estrelas a mais na sua pontuação

From → Programação

Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: