Difference between revisions of "Tutorial:Using Input (Português)"

(Created page with "Capturar eventos de entrada de dados com LÖVE é bastante simples. Neste tutorial vamos apresentar uma forma de capturar eventos do teclado e do mouse, utilizando os métodos e ...")
 
Line 44: Line 44:
 
</source>
 
</source>
  
Ainda que isso funcione perfeitamente, talvez nós apenas desejássemos saber quais teclas estão sendo pressionadas no momento e especificar diferentes comportamentos quando elas estão pressionadas ou forem soltas. Uma maneira elegante de fazer isso é usando os retornos de teclado [[love.keypressed (Português)|love.keypressed]] e
+
Ainda que isso funcione perfeitamente, talvez nós apenas desejássemos saber quais teclas estão sendo pressionadas no momento e especificar diferentes comportamentos quando elas estão pressionadas ou forem soltas. Uma maneira elegante de fazer isso é usando os retornos de teclado [[love.keypressed (Português)|love.keypressed]] e [[love.keyreleased (Português)|love.keyreleased]]. Eles trabalham de forma semelhante aos já conhecidos [[love.update (Português)|love.update]] e [[love.draw (Português)|love.draw]], executando o nosso código toda vez que o evento é acionado. Por exemplo:
 +
 
 +
<source lang="lua">
 +
function love.keypressed( tecla )
 +
  if tecla == "return" then
 +
      texto = "A tecla ENTER está sendo pressionada!"
 +
  end
 +
end
 +
 
 +
function love.keyreleased( tecla )
 +
  if tecla == "return" then
 +
      texto = "A tecla ENTER foi solta!"
 +
  end
 +
end
 +
 
 +
</source>
 +
 
 +
Como você pode ver, estes dois callbacks permitirão que você verifique se uma (ou mais) tecla está ou não sendo pressionada no momento. Até este ponto, o nosso código-fonte deve estar mais ou menos assim:
 +
 
 +
<source lang="lua">
 +
local texto
 +
 
 +
function love.load()
 +
  love.graphics.setNewFont(12)
 +
  texto = "Nada ainda"
 +
end
 +
 
 +
function love.update(dt)
 +
  if love.keyboard.isDown( " " ) then
 +
    texto = "A tecla ESPAÇO foi pressionada!"
 +
  end
 +
end
 +
 
 +
function love.keypressed( tecla )
 +
  if tecla == "return" then
 +
    texto = "A tecla ENTER está sendo pressionada!"
 +
  end
 +
end
 +
 
 +
function love.keyreleased( tecla )
 +
  if tecla == "return" then
 +
    texto = "A tecla ENTER foi solta!"
 +
  end
 +
end
 +
 
 +
function love.draw()
 +
  love.graphics.print( texto, 330, 300 )
 +
end
 +
</source>

Revision as of 17:25, 11 March 2015

Capturar eventos de entrada de dados com LÖVE é bastante simples. Neste tutorial vamos apresentar uma forma de capturar eventos do teclado e do mouse, utilizando os métodos e callbacks de ambos objetos. Vamos começar nosso tutorial inserindo este pequeno trecho de código em um arquivo vazio:

local texto

function love.load()
   love.graphics.setNewFont(12)
   texto = "Nada ainda"
end

function love.update(dt)

end

function love.draw()
   love.graphics.print( texto, 330, 300 )
end

Capturando eventos do teclado

A maneira mais fácil de saber se o usuário está pressionando uma tecla é chamado o método love.keyboard.isDown, que possui a seguinte sintaxe:

love.keyboard.isDown( tecla )

O parâmetro "tecla" é uma string que representa a tecla desejamos saber se está sendo pressionada. Por exemplo:

if love.keyboard.isDown( " " ) then
   texto = "A tecla ESPAÇO foi pressionada!"
end

Você pode encontrar a relação completa de teclas aqui. O melhor local para realizar essa verificação é dentro do callback love.update, dessa forma, somos capazes de obter a entrada do usuário e atualizar nossas variáveis antes de tirar as nossas coisas da tela. Então, o nosso callback love.update modificado deve ficar assim:

function love.update(dt)
   if love.keyboard.isDown( " " ) then
      texto = "A tecla ESPAÇO foi pressionada!"
   end
end

Ainda que isso funcione perfeitamente, talvez nós apenas desejássemos saber quais teclas estão sendo pressionadas no momento e especificar diferentes comportamentos quando elas estão pressionadas ou forem soltas. Uma maneira elegante de fazer isso é usando os retornos de teclado love.keypressed e love.keyreleased. Eles trabalham de forma semelhante aos já conhecidos love.update e love.draw, executando o nosso código toda vez que o evento é acionado. Por exemplo:

function love.keypressed( tecla )
   if tecla == "return" then
      texto = "A tecla ENTER está sendo pressionada!"
   end
end

function love.keyreleased( tecla )
   if tecla == "return" then
      texto = "A tecla ENTER foi solta!"
   end
end

Como você pode ver, estes dois callbacks permitirão que você verifique se uma (ou mais) tecla está ou não sendo pressionada no momento. Até este ponto, o nosso código-fonte deve estar mais ou menos assim:

local texto

function love.load()
  love.graphics.setNewFont(12)
  texto = "Nada ainda"
end

function love.update(dt)
  if love.keyboard.isDown( " " ) then
    texto = "A tecla ESPAÇO foi pressionada!"
  end
end

function love.keypressed( tecla )
  if tecla == "return" then
    texto = "A tecla ENTER está sendo pressionada!"
  end
end

function love.keyreleased( tecla )
  if tecla == "return" then
    texto = "A tecla ENTER foi solta!"
  end
end

function love.draw()
  love.graphics.print( texto, 330, 300 )
end