Difference between revisions of "Tutorial:Callback Functions (Español)"

(Update translation)
Line 1: Line 1:
Las funciones [[:Category:Callbacks|callback]] (retrollamada) en LÖVE son utilizadas por el motor para realizar diversas tareas y son opcionales. Sin embargo, una experiencia de juego completamente funcional, probablemente utilizará casi todos ellas, por lo que es recomendable saber lo que son.
+
Las funciones [[:Category:Callbacks|''callbacks'']] (retrollamadas) en LÖVE son llamadas por [[love.run]] para realizar diversas tareas y todas ellas son opcionales. Sin embargo, una experiencia de juego completamente funcional, probablemente utilizará casi todos ellas, por lo que es recomendable saber lo que son.
 +
 
 +
Un ''callback'', para los nuevos en la programación o que no estén familiarizados con el término, es una función que funciona, en cierto sentido, al revés.
 +
Una función normal, como [[love.graphics.draw]] o Math.floor, es llamada y Love o Lua hace algo. Un ''callback'', por el contrario, es una función que creas y Love llama en determinados momentos. Esto hace que sea fácil mantener el código organizado y óptimo. Por ejemplo, love.load sólo es llamado una vez cuando el juego se inicia (antes de cualquier otro tipo de ''callback''), es por ello, un buen lugar para colocar el código que se ocupa de cargar contenido del juego y preparar distintas cosas.
 +
 
 
==[[love.load]]==
 
==[[love.load]]==
 
<source lang="lua">
 
<source lang="lua">
Line 10: Line 14:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada una sola vez, cuando se inicia el juego, y es por lo general donde se cargan los recursos, se inician las variables y se establece una configuración específica. Todo esto también se puede hacer en cualquier otro sitio, pero haciendolo aquí significa que se hace una sola vez, ahorrando una gran cantidad de recursos del sistema.  
+
Esta función es llamada una sola vez, cuando se inicia el juego y es por lo general donde se cargan los recursos, se inician las variables y se establece una configuración específica. Todo esto también se puede hacer en cualquier otro sitio, pero haciéndolo aquí significa que se hace una sola vez, ahorrando una gran cantidad de recursos del sistema.  
  
 
==[[love.update]]==
 
==[[love.update]]==
Line 51: Line 55:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada cuando un botón del ratón es presionado. De esta forma, se recibe en el botón y las coordenadas del lugar en el que se presionó. El botón puede ser cualquiera de las [[MouseConstant|constants]]. Esta función va muy bien junto con <code>[[love.mousereleased]]</code>.  
+
Esta función es llamada cuando se pulsa un botón del ratón. De esta forma, se recibe en el botón y las coordenadas del lugar en el que se pulsó. El botón puede ser cualquiera de las [[MouseConstant|constantes]]. Esta función va muy bien junto con <code>[[love.mousereleased]]</code>.  
  
 
==[[love.mousereleased]]==
 
==[[love.mousereleased]]==
Line 61: Line 65:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada cuando un botón del ratón es soltado. De esta forma, se recibe en el botón y las coordenadas del lugar en el que se soltó. Puedes tener esta función junto con <code>[[love.mousepressed]]</code> o por separado, no están conectados de ninguna manera.   
+
Esta función es llamada cuando se suelta un botón del ratón. De esta forma, se recibe en el botón y las coordenadas del lugar en el que se soltó. Puedes tener esta función junto con <code>[[love.mousepressed]]</code> o por separado, no están conectados de ninguna manera.   
 
 
  
 
==[[love.keypressed]]==
 
==[[love.keypressed]]==
Line 74: Line 77:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada cuando una tecla es presionada y se recibe la tecla que se presionó. La tecla puede ser cualquiera de las [[KeyConstant|constants]]. Esta función va muy bien junto con <code>[[love.keyreleased]]</code>.
+
Esta función es llamada cuando se pulsa una tecla y de esta forma, se recibe la tecla pulsada. La tecla puede ser cualquiera de las [[KeyConstant|constantes]]. Esta función va muy bien junto con <code>[[love.keyreleased]]</code>.
  
 
==[[love.keyreleased]]==
 
==[[love.keyreleased]]==
Line 86: Line 89:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada cuando una tecla es soltada y se recibe la tecla que se soltó. Puedes tener esta función junto con [[love.keypressed]]</code> o por separado, no están conectados de ninguna manera.
+
Esta función es llamada cuando se suelta una tecla y de igual forma, se recibe la tecla soltada. Puedes tener esta función junto con [[love.keypressed]]</code> o por separado, no están conectados de ninguna manera.
  
 
==[[love.focus]]==
 
==[[love.focus]]==
Line 98: Line 101:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada cuando el usuario hace clic fuera de la ventana de LÖVE. Por ejemplo, si está jugando en una ventana a un juego  y haces hace clic en el navegador de Internet, el juego sera pausado automáticamente.
+
Esta función es llamada cuando el usuario hace clic fuera de la ventana de LÖVE. Por ejemplo, si se está jugando en una ventana a un juego  y se hace clic en el navegador de Internet, el juego será pausado automáticamente.
 +
<source lang="lua">
 +
function love.focus(f) gameIsPaused = not f end
 +
 
 +
function love.update(dt)
 +
if gameIsPaused then return end
 +
 
 +
-- El resto de tu código de love.update iría aquí
 +
end
 +
</source>
  
 
==[[love.quit]]==
 
==[[love.quit]]==
Line 106: Line 118:
 
end
 
end
 
</source>
 
</source>
Esta función es llamada cuando el usuario hace clic en el botón de cerrar las ventana (a menudo es una X). Por ejemplo, si el usuario decide que ha terminado de jugar pulsara el botón de cerrar, pero entonces, antes de que se cierre la pantalla, el juego puede guardar la partida.
+
Esta función es llamada cuando el usuario hace clic en el botón de cerrar la ventana (a menudo es una X). Por ejemplo, si el usuario decide que ha terminado de jugar pulsara el botón de cerrar, pero entonces, antes de que se cierre la pantalla, el juego puede guardar la partida.
  
Esas son las funciones callback y su uso básico.
+
Esas son las funciones ''callback'' y su uso básico.
  
 
[[Category:Tutorials (Español)]]
 
[[Category:Tutorials (Español)]]
  
 
{{#set:LOVE Version=0.6.0}}
 
{{#set:LOVE Version=0.6.0}}
{{#set:Description=Funciones Callback}}
+
{{#set:Description=Funciones ''Callback''}}
  
 
== Otros Idiomas ==
 
== Otros Idiomas ==
 
{{i18n|Tutorial:Callback Functions}}
 
{{i18n|Tutorial:Callback Functions}}

Revision as of 15:04, 15 January 2012

Las funciones callbacks (retrollamadas) en LÖVE son llamadas por love.run para realizar diversas tareas y todas ellas son opcionales. Sin embargo, una experiencia de juego completamente funcional, probablemente utilizará casi todos ellas, por lo que es recomendable saber lo que son.

Un callback, para los nuevos en la programación o que no estén familiarizados con el término, es una función que funciona, en cierto sentido, al revés. Una función normal, como love.graphics.draw o Math.floor, es llamada y Love o Lua hace algo. Un callback, por el contrario, es una función que creas y Love llama en determinados momentos. Esto hace que sea fácil mantener el código organizado y óptimo. Por ejemplo, love.load sólo es llamado una vez cuando el juego se inicia (antes de cualquier otro tipo de callback), es por ello, un buen lugar para colocar el código que se ocupa de cargar contenido del juego y preparar distintas cosas.

love.load

function love.load()
   image = love.graphics.newImage("tarta.jpg")
   local f = love.graphics.newFont(12)
   love.graphics.setFont(f)
   love.graphics.setColor(0,0,0,255)
   love.graphics.setBackgroundColor(255,255,255)
end

Esta función es llamada una sola vez, cuando se inicia el juego y es por lo general donde se cargan los recursos, se inician las variables y se establece una configuración específica. Todo esto también se puede hacer en cualquier otro sitio, pero haciéndolo aquí significa que se hace una sola vez, ahorrando una gran cantidad de recursos del sistema.

love.update

function love.update(dt)
   if love.keyboard.isDown("up") then
      num = num + 100 * dt -- esto incrementaría num 100 vez por segundo
   end
end

Esta función es llamada constantemente y probablemente será donde se hagan la mayoría de los cálculos. "dt" significa "delta time (tiempo delta)" y es la cantidad de segundos desde la última vez que se llamó a esta función (que suele ser un valor pequeño como 0,025714).

love.draw

function love.draw()
   love.graphics.draw(image, imgx, imgy)
   love.graphics.print("Haz clic y arrastra la tarta o usa las teclas de dirección", 10, 10)
end

Mediante love.draw se dibuja cualquier cosa en pantalla y si se llama a love.graphics.draw fuera de esta función, no tendría ningún efecto. Esta función también es llamada constantemente, así que ten en cuenta que si cambias el tipo de letra/color/modo/etc. al final de la función, tendrá un efecto en las cosas del principio de la función. Por ejemplo:

function love.load()
   love.graphics.setColor(0,0,0)
end

function love.draw()
   love.graphics.print("Este texto no es negro, debido a la línea de abajo", 100, 100)
   love.graphics.setColor(255,0,0)
   love.graphics.print("Este texto es rojo", 100, 200)
end

love.mousepressed

function love.mousepressed(x, y, button)
   if button == 'l' then
      imgx = x -- mueve la imagen a donde se ha echo clic
      imgy = y
   end
end

Esta función es llamada cuando se pulsa un botón del ratón. De esta forma, se recibe en el botón y las coordenadas del lugar en el que se pulsó. El botón puede ser cualquiera de las constantes. Esta función va muy bien junto con love.mousereleased.

love.mousereleased

function love.mousereleased(x, y, button)
   if button == 'l' then
      fireSlingshot(x,y) -- esta impresionante función totalmente personalizada es definida en otra parte
   end
end

Esta función es llamada cuando se suelta un botón del ratón. De esta forma, se recibe en el botón y las coordenadas del lugar en el que se soltó. Puedes tener esta función junto con love.mousepressed o por separado, no están conectados de ninguna manera.

love.keypressed

function love.keypressed(key, unicode)
   if key == 'b' then
      text = "La tecla B ha sido presionada."
   elseif key == 'a' then
      a_down = true
   end
end

Esta función es llamada cuando se pulsa una tecla y de esta forma, se recibe la tecla pulsada. La tecla puede ser cualquiera de las constantes. Esta función va muy bien junto con love.keyreleased.

love.keyreleased

function love.keyreleased(key, unicode)
   if key == 'b' then
      text = "La tecla B a sido soltada."
   elseif key == 'a' then
      a_down = false
   end
end

Esta función es llamada cuando se suelta una tecla y de igual forma, se recibe la tecla soltada. Puedes tener esta función junto con love.keypressed o por separado, no están conectados de ninguna manera.

love.focus

function love.focus(f)
  if not f then
    print("LOST FOCUS")
  else
    print("GAINED FOCUS")
  end
end

Esta función es llamada cuando el usuario hace clic fuera de la ventana de LÖVE. Por ejemplo, si se está jugando en una ventana a un juego y se hace clic en el navegador de Internet, el juego será pausado automáticamente.

function love.focus(f) gameIsPaused = not f end

function love.update(dt)
	if gameIsPaused then return end

	-- El resto de tu código de love.update iría aquí
end

love.quit

function love.quit()
  print("Gracias por jugar! Vuelve pronto!")
end

Esta función es llamada cuando el usuario hace clic en el botón de cerrar la ventana (a menudo es una X). Por ejemplo, si el usuario decide que ha terminado de jugar pulsara el botón de cerrar, pero entonces, antes de que se cierre la pantalla, el juego puede guardar la partida.

Esas son las funciones callback y su uso básico.



Otros Idiomas