Difference between revisions of "Tutorial:Callback Functions (Italiano)"

(Created page with "Le funzioni di callback (''richiamo'') in LÖVE sono chiamate da love.run per eseguire diversi compiti e sono tutte opzionali. A ogni modo, un'esperie...")
 
m (Update for new syntax)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
Le funzioni di [[:Category:Callbacks|callback]] (''richiamo'') in LÖVE sono chiamate da [[love.run]] per eseguire diversi compiti e sono tutte opzionali. A ogni modo, un'esperienza di gioco completa probabilmente richiederà che siano utilizzate tutte, quindi è saggio conoscerle.
 
Le funzioni di [[:Category:Callbacks|callback]] (''richiamo'') in LÖVE sono chiamate da [[love.run]] per eseguire diversi compiti e sono tutte opzionali. A ogni modo, un'esperienza di gioco completa probabilmente richiederà che siano utilizzate tutte, quindi è saggio conoscerle.
  
Una callback, per chi è nuovo nella programmazione o poco familiare con il termine, è una funzione che lavora al contrario in un senso. Una funzione regolare come [[love.graphics.draw]] o math.floor viene chiamata e LÖVE o Lua fanno qualcosa. Una callback, invece, è una funzione che tu scrivi e LÖVE chiama in certi momenti. Questa rende semplice mantenere il codice organizzato e ottimale. Per esempio, visto che love.load verrà chiamata solo una volta quando il gioco viene avviato per la prima volta (prima di ogni altra callback), è un buon posto per mettere il codice che carica il contenuto del gioco o che prepara il tutto.
+
Una callback, per chi è nuovo nella programmazione o poco familiare con il termine, è una funzione che lavora al contrario, per certi versi. Una funzione regolare come [[love.graphics.draw]] o math.floor viene chiamata e LÖVE o Lua fanno qualcosa. Una callback, invece, è una funzione che il programmatore scrive e LÖVE chiama in certi momenti. Questa rende semplice mantenere il codice organizzato e ottimale. Per esempio, visto che love.load verrà chiamata solo una volta quando il gioco viene avviato per la prima volta (prima di ogni altra callback), è un buon posto per mettere il codice che carica il contenuto del gioco o che prepara il tutto.
  
 
==[[love.load]]==
 
==[[love.load]]==
Line 28: Line 28:
 
function love.draw()
 
function love.draw()
 
   love.graphics.draw(image, imgx, imgy)
 
   love.graphics.draw(image, imgx, imgy)
   love.graphics.print("Click and drag the cake around or use the arrow keys", 10, 10)
+
   love.graphics.print("Fai clic e trascina la torta in giro o usa le frecce direzionali", 10, 10)
 
end
 
end
 
</source>
 
</source>
<code>[[love.draw]]</code> is where all the drawing happens (if that wasn't obvious enough already) and if you call any of the <code>[[love.graphics.draw]]</code> outside of this function then it's not going to have any effect. This function is also called continuously so keep in mind that if you change the font/color/mode/etc at the end of the function then it will have a effect on things at the beginning of the function. For example:  
+
<code>[[love.draw]]</code> è il posto dove avvengono tutti i disegni (se non era già abbastanza chiaro) e se viene chiamato qualsiasi tipo di codice della libreria <code>[[love.graphics.draw]]</code> fuori da questa funzione non avrà effetto. Anche questa funzione è chiamata continuamente, per cui bisogna tenere a mente che se viene cambiato il/la carattere/colore/modalità/ecc. alla fine della funzione ciò avrà effetto sulle cose all'inizio della funzione. Per esempio:
 
<source lang="lua">
 
<source lang="lua">
 
function love.load()
 
function love.load()
Line 38: Line 38:
  
 
function love.draw()
 
function love.draw()
   love.graphics.print("This text is not black because of the line below", 100, 100)
+
   love.graphics.print("Questo testo non è nero a causa della linea sotto", 100, 100)
 
   love.graphics.setColor(255,0,0)
 
   love.graphics.setColor(255,0,0)
   love.graphics.print("This text is red", 100, 200)
+
   love.graphics.print("Questo testo è rosso", 100, 200)
 
end
 
end
 
</source>
 
</source>
  
 
==[[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 == 'l' then
+
   if button == 1 then
       imgx = x -- move image to where mouse clicked
+
       imgx = x -- muovi l'immagine dove si trova il curosre
 
       imgy = y
 
       imgy = y
 
   end
 
   end
 
end
 
end
 
</source>
 
</source>
This function is called whenever a mouse button is pressed and it receives the button and the coordinates of where it was pressed. The button can be any of the [[MouseConstant|constants]]. This function goes very well along with <code>[[love.mousereleased]]</code>.  
+
Questa funzione è chiamata ogni volta che un pulsante del mouse è premuto e riceve il nome del pulsante e le coordinate del punto in cui è stato premuto. Il nome del pulsante può essere una qualsiasi delle [[MouseConstant|costanti]]. Questa funzione lavora molto bene insieme a <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 == 'l' then
+
   if button == 1 then
       fireSlingshot(x,y) -- this totally awesome custom function is defined elsewhere
+
       fireSlingshot(x,y) -- questa funzione incredibilmente favolosa è definita da un'altra parte
 
   end
 
   end
 
end
 
end
 
</source>
 
</source>
This function is called whenever a mouse button is released and it receives the button and the coordinates of where it was released. You can have this function together with <code>[[love.mousepressed]]</code> or separate, they aren't connected in any way.  
+
Questa funzione è chiamata ogni volta che un pulsante del mouse viene rilasciato e riceve il nome del pulsante e le coordinate di dove è stato rilasciato. Si può usare questa funzione insieme a <code>[[love.mousepressed]]</code> o separatamente, non sono collegate in alcun modo.
 
 
  
 
==[[love.keypressed]]==
 
==[[love.keypressed]]==
Line 70: Line 71:
 
function love.keypressed(key)
 
function love.keypressed(key)
 
   if key == 'b' then
 
   if key == 'b' then
       text = "The B key was pressed."
+
       text = "Il tasto B è stato premuto."
 
   elseif key == 'a' then
 
   elseif key == 'a' then
 
       a_down = true
 
       a_down = true
Line 76: Line 77:
 
end
 
end
 
</source>
 
</source>
This function is called whenever a keyboard key is pressed and receives the key that was pressed. The key can be any of the [[KeyConstant|constants]]. This functions goes very well along with <code>[[love.keyreleased]]</code>.
+
Questa funzione è chiamata ogni volta che un tasto della tastiera è premuto e riceve il nome del tasto premuto. Il nome del tasto può essere una qualsiasi delle [[KeyConstant|costanti]]. Questa funzione lavora molto bene insieme a <code>[[love.keyreleased]]</code>.
  
 
==[[love.keyreleased]]==
 
==[[love.keyreleased]]==
Line 82: Line 83:
 
function love.keyreleased(key)
 
function love.keyreleased(key)
 
   if key == 'b' then
 
   if key == 'b' then
       text = "The B key was released."
+
       text = "Il tasto B è stato rilasciato."
 
   elseif key == 'a' then
 
   elseif key == 'a' then
 
       a_down = false
 
       a_down = false
Line 88: Line 89:
 
end
 
end
 
</source>
 
</source>
This function is called whenever a keyboard key is released and receives the key that was released. You can have this function together with <code>[[love.keypressed]]</code> or separate, they aren't connected in any way.  
+
Questa funzione è chiamata ogni volta che un tasto della tastiera viene rilasciato e riceve il nome del tasto rilasciato. Si può usare questa funzione insieme a <code>[[love.keypressed]]</code> o separatamente, non sono collegate in alcun modo.
  
 
==[[love.focus]]==
 
==[[love.focus]]==
Line 94: Line 95:
 
function love.focus(f)
 
function love.focus(f)
 
   if not f then
 
   if not f then
     print("LOST FOCUS")
+
     print("NON ATTIVO")
 
   else
 
   else
     print("GAINED FOCUS")
+
     print("ATTIVO")
 
   end
 
   end
 
end
 
end
 
</source>
 
</source>
This function is called whenever the user clicks off and on the LÖVE window. For instance, if they are playing a windowed game and a user clicks on his Internet browser, the game could be notified and automatically pause the game.
+
Questa funzione è chiamata ogni volta che l'utente fa clic all'interno o all'esterno della finestra di LÖVE. Per esempio, se si sta giocando all'interno di una finestra e l'utente fa clic sul suo browser internet, il gioco può essere avvisato e automaticamente mettere in pausa il gioco.
 
<source lang="lua">
 
<source lang="lua">
 
function love.focus(f) gameIsPaused = not f end
 
function love.focus(f) gameIsPaused = not f end
Line 107: Line 108:
 
if gameIsPaused then return end
 
if gameIsPaused then return end
  
-- The rest of your love.update code goes here
+
-- Il resto del proprio love.update va qui
 
end
 
end
 
</source>
 
</source>
Line 114: Line 115:
 
<source lang="lua">
 
<source lang="lua">
 
function love.quit()
 
function love.quit()
   print("Thanks for playing! Come back soon!")
+
   print("Grazie per aver giocato! Torna presto!")
 
end
 
end
 
</source>
 
</source>
This function is called whenever the user clicks the windows close button (often an X). For instance, if the user decides they are done playing, they could click the close button. Then, before it closes, the game can save its state.
+
Questa funzione è chiamata ogni volta che l'utente fa clic sul pulsante di chiusura della finestra (spesso una X). Per esempio, se l'utente non vuole più giocare, può fare clic sul pulsante di chiusura. Quindi, prima che si chiuda, il gioco può salvare il suo stato.
  
Those are the callback functions and their basic usage.
+
Queste sono le funzioni di callback e il loro uso di base.
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]
 
{{#set:LOVE Version=0.6.0}}
 
{{#set:LOVE Version=0.6.0}}
{{#set:Description=Callback Functions}}
+
{{#set:Description=Funzioni di callback}}
== Other languages ==
+
== Altre lingue ==
 
{{i18n|Tutorial:Callback Functions}}
 
{{i18n|Tutorial:Callback Functions}}

Latest revision as of 21:25, 6 June 2016

Le funzioni di callback (richiamo) in LÖVE sono chiamate da love.run per eseguire diversi compiti e sono tutte opzionali. A ogni modo, un'esperienza di gioco completa probabilmente richiederà che siano utilizzate tutte, quindi è saggio conoscerle.

Una callback, per chi è nuovo nella programmazione o poco familiare con il termine, è una funzione che lavora al contrario, per certi versi. Una funzione regolare come love.graphics.draw o math.floor viene chiamata e LÖVE o Lua fanno qualcosa. Una callback, invece, è una funzione che il programmatore scrive e LÖVE chiama in certi momenti. Questa rende semplice mantenere il codice organizzato e ottimale. Per esempio, visto che love.load verrà chiamata solo una volta quando il gioco viene avviato per la prima volta (prima di ogni altra callback), è un buon posto per mettere il codice che carica il contenuto del gioco o che prepara il tutto.

love.load

function love.load()
   image = love.graphics.newImage("cake.jpg")
   love.graphics.setNewFont(12)
   love.graphics.setColor(0,0,0)
   love.graphics.setBackgroundColor(255,255,255)
end

Questa funzione viene chiamata una sola volta, quando il gioco è avviato, ed è il posto dove di solito si caricano le risorse, si inizializzano le variabili e si stabiliscono delle impostazioni specifiche. Tutte queste cose possono essere fatte anche in qualsiasi altro posto, ma in questo modo vengono eseguite solo una volta, salvando molte risorse di sistema.

love.update

function love.update(dt)
   if love.keyboard.isDown("up") then
      num = num + 100 * dt -- in questo modo si incrementa num di 100 ogni secondo
   end
end

Questa funzione è chiamata continuamente e probabilmente sarà il posto dove i calcoli matematici vengono svolti. 'dt' sta per "delta time" (differenza di tempo) ed è la quantità di secondi passati dall'ultima volta che questa funzione è stata chiamata (che è normalmente un valore piccolo come 0.025714).

love.draw

function love.draw()
   love.graphics.draw(image, imgx, imgy)
   love.graphics.print("Fai clic e trascina la torta in giro o usa le frecce direzionali", 10, 10)
end

love.draw è il posto dove avvengono tutti i disegni (se non era già abbastanza chiaro) e se viene chiamato qualsiasi tipo di codice della libreria love.graphics.draw fuori da questa funzione non avrà effetto. Anche questa funzione è chiamata continuamente, per cui bisogna tenere a mente che se viene cambiato il/la carattere/colore/modalità/ecc. alla fine della funzione ciò avrà effetto sulle cose all'inizio della funzione. Per esempio:

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

function love.draw()
   love.graphics.print("Questo testo non è nero a causa della linea sotto", 100, 100)
   love.graphics.setColor(255,0,0)
   love.graphics.print("Questo testo è rosso", 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 -- muovi l'immagine dove si trova il curosre
      imgy = y
   end
end

Questa funzione è chiamata ogni volta che un pulsante del mouse è premuto e riceve il nome del pulsante e le coordinate del punto in cui è stato premuto. Il nome del pulsante può essere una qualsiasi delle costanti. Questa funzione lavora molto bene insieme a 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) -- questa funzione incredibilmente favolosa è definita da un'altra parte
   end
end

Questa funzione è chiamata ogni volta che un pulsante del mouse viene rilasciato e riceve il nome del pulsante e le coordinate di dove è stato rilasciato. Si può usare questa funzione insieme a love.mousepressed o separatamente, non sono collegate in alcun modo.

love.keypressed

function love.keypressed(key)
   if key == 'b' then
      text = "Il tasto B è stato premuto."
   elseif key == 'a' then
      a_down = true
   end
end

Questa funzione è chiamata ogni volta che un tasto della tastiera è premuto e riceve il nome del tasto premuto. Il nome del tasto può essere una qualsiasi delle costanti. Questa funzione lavora molto bene insieme a love.keyreleased.

love.keyreleased

function love.keyreleased(key)
   if key == 'b' then
      text = "Il tasto B è stato rilasciato."
   elseif key == 'a' then
      a_down = false
   end
end

Questa funzione è chiamata ogni volta che un tasto della tastiera viene rilasciato e riceve il nome del tasto rilasciato. Si può usare questa funzione insieme a love.keypressed o separatamente, non sono collegate in alcun modo.

love.focus

function love.focus(f)
  if not f then
    print("NON ATTIVO")
  else
    print("ATTIVO")
  end
end

Questa funzione è chiamata ogni volta che l'utente fa clic all'interno o all'esterno della finestra di LÖVE. Per esempio, se si sta giocando all'interno di una finestra e l'utente fa clic sul suo browser internet, il gioco può essere avvisato e automaticamente mettere in pausa il gioco.

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

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

	-- Il resto del proprio love.update va qui
end

love.quit

function love.quit()
  print("Grazie per aver giocato! Torna presto!")
end

Questa funzione è chiamata ogni volta che l'utente fa clic sul pulsante di chiusura della finestra (spesso una X). Per esempio, se l'utente non vuole più giocare, può fare clic sul pulsante di chiusura. Quindi, prima che si chiuda, il gioco può salvare il suo stato.

Queste sono le funzioni di callback e il loro uso di base.


Altre lingue