Difference between revisions of "Tutorial:Callback Functions (Español)"
m (Wording and typos) |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | Las funciones [[:Category:Callbacks| | + | 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. | ||
+ | En el caso de una función normal, como [[love.graphics.draw]] o Math.floor, tú la llamas y Löve o Lua hacen algo. Un ''callback'', por el contrario, es una función que creas tú para que Love la llame 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''); por ello, es un buen lugar para colocar el código que se ocupa de cargar contenido del juego y hacer otros preparativos cualesquiera. | ||
+ | |||
==[[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 | + | 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 16: | Line 20: | ||
function love.update(dt) | function love.update(dt) | ||
if love.keyboard.isDown("up") then | if love.keyboard.isDown("up") then | ||
− | num = num + 100 * dt -- esto | + | num = num + 100 * dt -- esto incrementa num en cada frame, a |
+ | -- un ritmo de 100 unidades por segundo | ||
end | end | ||
end | end | ||
</source> | </source> | ||
− | Esta función es llamada constantemente y probablemente será donde se hagan la mayoría de los cálculos. "dt" significa "[[love.timer.getDelta|delta time]] (tiempo delta) | + | Esta función es llamada constantemente y probablemente será donde se hagan la mayoría de los cálculos. "dt" significa "[[love.timer.getDelta|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]]== | ==[[love.draw]]== | ||
Line 43: | Line 48: | ||
==[[love.mousepressed]]== | ==[[love.mousepressed]]== | ||
+ | {{newin|[[0.10.0]]|100|type=variant}} | ||
<source lang="lua"> | <source lang="lua"> | ||
− | function love.mousepressed(x, y, button) | + | function love.mousepressed(x, y, button, istouch) |
− | if button == | + | if button == 1 then |
imgx = x -- mueve la imagen a donde se ha echo clic | imgx = x -- mueve la imagen a donde se ha echo clic | ||
imgy = y | imgy = y | ||
Line 51: | Line 57: | ||
end | end | ||
</source> | </source> | ||
− | Esta función es llamada cuando un botón del ratón | + | 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]]== | ||
+ | {{newin|[[0.10.0]]|100|type=variant}} | ||
<source lang="lua"> | <source lang="lua"> | ||
− | function love.mousereleased(x, y, button) | + | function love.mousereleased(x, y, button, istouch) |
− | if button == | + | if button == 1 then |
− | fireSlingshot(x,y) -- esta | + | fireSlingshot(x,y) -- se supone que tú has definido esta función en otra parte |
end | end | ||
end | end | ||
</source> | </source> | ||
− | Esta función es llamada cuando un botón del ratón | + | 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 80: | ||
end | end | ||
</source> | </source> | ||
− | Esta función es llamada cuando una tecla | + | 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 80: | Line 86: | ||
function love.keyreleased(key, unicode) | function love.keyreleased(key, unicode) | ||
if key == 'b' then | if key == 'b' then | ||
− | text = "La tecla B | + | text = "La tecla B ha sido soltada." |
elseif key == 'a' then | elseif key == 'a' then | ||
a_down = false | a_down = false | ||
Line 86: | Line 92: | ||
end | end | ||
</source> | </source> | ||
− | Esta función es llamada cuando una tecla | + | 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 92: | Line 98: | ||
function love.focus(f) | function love.focus(f) | ||
if not f then | if not f then | ||
− | print(" | + | print("HE PERDIDO EL FOCO") |
else | else | ||
− | print(" | + | print("AHORA TENGO FOCO") |
end | end | ||
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 | + | 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, puedes hacer que el juego se pause 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]]== | ||
<source lang="lua"> | <source lang="lua"> | ||
function love.quit() | function love.quit() | ||
− | print(" | + | print("¡Gracias por jugar! ¡Vuelve pronto!") |
end | end | ||
</source> | </source> | ||
− | Esta función es llamada cuando el usuario hace clic en el botón de cerrar | + | Esta función es llamada cuando el usuario hace clic en el botón de cerrar la ventana (a menudo es una X) o cuando se llama a [[love.event.quit]]() para terminar. Por ejemplo, si el usuario decide que ha terminado de jugar, pulsará 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. |
− | [[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}} |
Latest revision as of 22:37, 30 October 2018
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. En el caso de una función normal, como love.graphics.draw o Math.floor, tú la llamas y Löve o Lua hacen algo. Un callback, por el contrario, es una función que creas tú para que Love la llame 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); por ello, es un buen lugar para colocar el código que se ocupa de cargar contenido del juego y hacer otros preparativos cualesquiera.
Contents
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 incrementa num en cada frame, a
-- un ritmo de 100 unidades 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
Available since LÖVE 0.10.0 |
This variant is not supported in earlier versions. |
function love.mousepressed(x, y, button, istouch)
if button == 1 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
Available since LÖVE 0.10.0 |
This variant is not supported in earlier versions. |
function love.mousereleased(x, y, button, istouch)
if button == 1 then
fireSlingshot(x,y) -- se supone que tú has definido esta función 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 ha 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("HE PERDIDO EL FOCO")
else
print("AHORA TENGO FOCO")
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, puedes hacer que el juego se pause 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) o cuando se llama a love.event.quit() para terminar. Por ejemplo, si el usuario decide que ha terminado de jugar, pulsará 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
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info