Difference between revisions of "Tutorial:Callback Functions (Français)"

(Created page with 'The callback functions in LÖVE are used by the engine to perform various tasks and are all optional. However, a fully-featured game experience would prob…')
 
(love.mousereleased)
 
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
The [[:Category:Callbacks|callback]] functions in LÖVE are used by the engine to perform various tasks and are all optional. However, a fully-featured game experience would probably utilize nearly all of them, so it's wise to know what they are.  
+
Les fonctions [[:Category:Callbacks (Français)|callback]] (fonctions de rappel) sont appelées dans LÖVE par la fonction [[love.run (Français)|love.run]] pour effectuer des tâches diverses et sont toutes facultatives. Toutefois, pour une expérience de jeu complète il faudra probablement en utiliser la quasi-totalité, il est donc intéressant de les connaître.
  
==[[love.load]]==
+
Une fonction de rappel, pour ceux qui sont nouveaux en programmation ou peu familier avec ce terme, est une fonction qui fonctionne en arrière en quelque sorte. Dans le cas d'une fonction classique comme [[love.graphics.draw (Français)|love.graphics.draw]] ou math.floor, vous appelez cette fonction et LÖVE ou Lua effectue une tâche. Dans le cas d'une fonction de rappel (callback), au contraire, c'est vous qui développez la fonction et LÖVE qui l'appelle lorsque nécessaire. Cela permet de laisser votre code organisé et optimal. Par exemple, comme love.load ne sera appelé que lorsque le jeu est démarré pour la première fois (avant tout autre callback), c'est un endroit approprié pour placer le code qui charge le contenu du jeu et prépare également ses différents éléments.
 +
 
 +
==[[love.load (Français)|love.load]]==
 
<source lang="lua">
 
<source lang="lua">
 
function love.load()
 
function love.load()
Line 11: Line 13:
 
end
 
end
 
</source>
 
</source>
This function gets called only once, when the game is started, and is usually where you would load resources, initialize variables and set specific settings. All those things can be done anywhere else as well, but doing them here means that they are done once only, saving a lot of system resources.  
+
Cette fonction est appelée une seule fois, lorsque le jeu est lancé, et est généralement celle où vous chargez des ressources, initialisez des variables et des paramètres spécifiques. Toutes ces choses peuvent aussi bien être faites n'importe où, mais les faire à cette endroit signifie qu'elles ne sont exécutées qu'une fois, ce qui économise beaucoup de ressources système.
  
==[[love.update]]==
+
==[[love.update (Français)|love.update]]==
 
<source lang="lua">
 
<source lang="lua">
 
function love.update(dt)
 
function love.update(dt)
 
   if love.keyboard.isDown("up") then
 
   if love.keyboard.isDown("up") then
       num = num + 100 * dt -- this would increment num by 100 per second
+
       num = num + 100 * dt -- Cela incrémentera num par 100 à chaque seconde
 
   end
 
   end
 
end
 
end
 
</source>
 
</source>
This function is called continuously and will probably be where most of your math is done. 'dt' stands for "[[love.timer.getDelta|delta time]]" and is the amount of seconds since the last time this function was called (which is usually a small value like 0.025714).  
+
Cette fonction est appelée en permanence et sera probablement l'endroit où la plupart de vos calculs seront effectués. 'dt' signifie « [[love.timer.getDelta (Français)|delta temps]] », c'est le nombre de secondes depuis la dernière fois que cette fonction a été appelée (qui est habituellement une petite valeur du type 0.025714).  
  
==[[love.draw]]==
+
==[[love.draw (Français)|love.draw]]==
 
<source lang="lua">
 
<source lang="lua">
 
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("Cliquez et glissez le gâteau autour, ou utilisez les touches de direction", 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 (Français)|love.draw]]</code> est l'endroit pour tout ce qui concerne l'affichage (« draw » signifie tracer) et si vous appelez l'un des <code>[[love.graphics.draw (Français)|love.graphics.draw]]</code> en dehors de cette fonction elle n'aura pas d'effet. Cette fonction est aussi appelée en permanence, gardez donc à l'esprit que si vous modifiez la police/couleur/mode/etc à la fin de la fonction, alors cela aura un effet sur les éléments au début de la fonction. Par exemple :  
 
<source lang="lua">
 
<source lang="lua">
 
function love.load()
 
function love.load()
Line 37: Line 39:
  
 
function love.draw()
 
function love.draw()
   love.graphics.print("This text is not black because of the line below", 100, 100)
+
   love.graphics.print("Ce texte n'est pas noir en raison de la lligne du dessous", 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("Ce texte est rouge", 100, 200)
 
end
 
end
 
</source>
 
</source>
  
==[[love.mousepressed]]==
+
==[[love.mousepressed (Français)|love.mousepressed]]==
 +
{{newin (Français)|[[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 -- déplace l'image à l'emplacement du clic de souris
 
       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>.  
+
Cette fonction (souris pressée) est appelée à chaque fois qu'un bouton de la souris est pressé. Elle reçoit le bouton et les coordonnées de l'emplacement où celui-ci a été pressé. Le bouton peut être l'une de ces [[MouseConstant (Français)|constantes]]. Cette fonction va de paire avec <code>[[love.mousereleased (Français)|love.mousereleased]]</code> (souris relâché).  
  
==[[love.mousereleased]]==
+
==[[love.mousereleased (Français)|love.mousereleased]]==
 +
{{newin (Français)|[[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) -- Cette fonction personnalisée complétement incroyable est définir ailleurs
 
   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.  
+
Cette fonction (souris relâchée) est appelée chaque fois qu'un bouton de la souris est relâché et il reçoit le bouton et les coordonnées de l'endroit où il a été relâché. Vous pouvez avoir cette fonction avec ou sans <code>[[love.mousepressed (Français)|love.mousepressed]]</code>, ces 2 fonctions ne sont absolument pas liées.
  
 
+
==[[love.keypressed (Français)|love.keypressed]]==
==[[love.keypressed]]==
 
 
<source lang="lua">
 
<source lang="lua">
 
function love.keypressed(key, unicode)
 
function love.keypressed(key, unicode)
Line 75: Line 78:
 
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>.
+
Cette fonction (touche préssée) est appelée chaque fois qu'une touche du clavier est enfoncée et reçoit la touche (key) qui a été enfoncée. La touche peut être l'une de ces [[KeyConstant (Français)|constantes]]. Cette fonction va très bien avec <code>[[love.keyreleased (Français)|love.keyreleased]]</code> (touche relâchée).  
  
==[[love.keyreleased]]==
+
==[[love.keyreleased (Français)|love.keyreleased]]==
 
<source lang="lua">
 
<source lang="lua">
 
function love.keyreleased(key, unicode)
 
function love.keyreleased(key, unicode)
Line 87: Line 90:
 
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.  
+
Cette fonction est appelée chaque fois qu'une touche du clavier est relâchée et reçoit la touche (key) qui a été relâchée. Vous pouvez avoir cette fonction avec ou sans <code>[[love.keypressed (Français)|love.keypressed]]</code> (touche pressée), elles ne sont absolument pas liées.
  
Those are the callback functions and their basic usage.
+
==[[love.focus (Français)|love.focus]]==
 +
<source lang="lua">
 +
function love.focus(f)
 +
  if not f then
 +
    print("LOST FOCUS")
 +
  else
 +
    print("GAINED FOCUS")
 +
  end
 +
end
 +
</source>
 +
Cette fonction est appelée lorsque l'utilisateur clique hors ou dans la fenêtre LÖVE. Par exemple, s'il joue en mode fenêtré et qu'il clique sur son navigateur Internet, le jeu pourrait être notifié et automatiquement mettre en pause la partie.  
  
[[Category:Tutorials]]
+
==[[love.quit (Français)|love.quit]]==
 +
<source lang="lua">
 +
function love.quit()
 +
  print("Thanks for playing! Come back soon!")
 +
end
 +
</source>
 +
Cette fonction est appelée chaque fois que l'utilisateur clique sur le bouton de fermeture de fenêtre (souvent une croix). Par exemple, si l'utilisateur décide qu'il a fini de jouer, il peut cliquer sur le bouton Fermer. Puis, avant de se fermer, le jeu peut enregistrer son état.
 +
 
 +
Voilà pour les fonctions de « callback » et leur utilisation simple.
 +
 
 +
[[Category:Tutorials (Français)]]
  
 
{{#set:LOVE Version=0.6.0}}
 
{{#set:LOVE Version=0.6.0}}
{{#set:Description=Callback Functions}}
+
{{#set:Description=Callback Functions (Français)}}
 +
 
 +
== Autres langues ==
 +
{{i18n|Tutorial:Callback Functions}}

Latest revision as of 19:21, 21 August 2021

Les fonctions callback (fonctions de rappel) sont appelées dans LÖVE par la fonction love.run pour effectuer des tâches diverses et sont toutes facultatives. Toutefois, pour une expérience de jeu complète il faudra probablement en utiliser la quasi-totalité, il est donc intéressant de les connaître.

Une fonction de rappel, pour ceux qui sont nouveaux en programmation ou peu familier avec ce terme, est une fonction qui fonctionne en arrière en quelque sorte. Dans le cas d'une fonction classique comme love.graphics.draw ou math.floor, vous appelez cette fonction et LÖVE ou Lua effectue une tâche. Dans le cas d'une fonction de rappel (callback), au contraire, c'est vous qui développez la fonction et LÖVE qui l'appelle lorsque nécessaire. Cela permet de laisser votre code organisé et optimal. Par exemple, comme love.load ne sera appelé que lorsque le jeu est démarré pour la première fois (avant tout autre callback), c'est un endroit approprié pour placer le code qui charge le contenu du jeu et prépare également ses différents éléments.

love.load

function love.load()
   image = love.graphics.newImage("cake.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

Cette fonction est appelée une seule fois, lorsque le jeu est lancé, et est généralement celle où vous chargez des ressources, initialisez des variables et des paramètres spécifiques. Toutes ces choses peuvent aussi bien être faites n'importe où, mais les faire à cette endroit signifie qu'elles ne sont exécutées qu'une fois, ce qui économise beaucoup de ressources système.

love.update

function love.update(dt)
   if love.keyboard.isDown("up") then
      num = num + 100 * dt -- Cela incrémentera num par 100 à chaque seconde
   end
end

Cette fonction est appelée en permanence et sera probablement l'endroit où la plupart de vos calculs seront effectués. 'dt' signifie « delta temps », c'est le nombre de secondes depuis la dernière fois que cette fonction a été appelée (qui est habituellement une petite valeur du type 0.025714).

love.draw

function love.draw()
   love.graphics.draw(image, imgx, imgy)
   love.graphics.print("Cliquez et glissez le gâteau autour, ou utilisez les touches de direction", 10, 10)
end

love.draw est l'endroit pour tout ce qui concerne l'affichage (« draw » signifie tracer) et si vous appelez l'un des love.graphics.draw en dehors de cette fonction elle n'aura pas d'effet. Cette fonction est aussi appelée en permanence, gardez donc à l'esprit que si vous modifiez la police/couleur/mode/etc à la fin de la fonction, alors cela aura un effet sur les éléments au début de la fonction. Par exemple :

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

function love.draw()
   love.graphics.print("Ce texte n'est pas noir en raison de la lligne du dessous", 100, 100)
   love.graphics.setColor(255,0,0)
   love.graphics.print("Ce texte est rouge", 100, 200)
end

love.mousepressed

Disponible depuis LÖVE 0.10.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.
function love.mousepressed(x, y, button,istouch)
   if button == 1 then
      imgx = x -- déplace l'image à l'emplacement du clic de souris
      imgy = y
   end
end

Cette fonction (souris pressée) est appelée à chaque fois qu'un bouton de la souris est pressé. Elle reçoit le bouton et les coordonnées de l'emplacement où celui-ci a été pressé. Le bouton peut être l'une de ces constantes. Cette fonction va de paire avec love.mousereleased (souris relâché).

love.mousereleased

Disponible depuis LÖVE 0.10.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.
function love.mousereleased(x, y, button, istouch)
   if button == 1 then
      fireSlingshot(x,y) -- Cette fonction personnalisée complétement incroyable est définir ailleurs
   end
end

Cette fonction (souris relâchée) est appelée chaque fois qu'un bouton de la souris est relâché et il reçoit le bouton et les coordonnées de l'endroit où il a été relâché. Vous pouvez avoir cette fonction avec ou sans love.mousepressed, ces 2 fonctions ne sont absolument pas liées.

love.keypressed

function love.keypressed(key, unicode)
   if key == 'b' then
      text = "The B key was pressed."
   elseif key == 'a' then
      a_down = true
   end
end

Cette fonction (touche préssée) est appelée chaque fois qu'une touche du clavier est enfoncée et reçoit la touche (key) qui a été enfoncée. La touche peut être l'une de ces constantes. Cette fonction va très bien avec love.keyreleased (touche relâchée).

love.keyreleased

function love.keyreleased(key, unicode)
   if key == 'b' then
      text = "The B key was released."
   elseif key == 'a' then
      a_down = false
   end
end

Cette fonction est appelée chaque fois qu'une touche du clavier est relâchée et reçoit la touche (key) qui a été relâchée. Vous pouvez avoir cette fonction avec ou sans love.keypressed (touche pressée), elles ne sont absolument pas liées.

love.focus

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

Cette fonction est appelée lorsque l'utilisateur clique hors ou dans la fenêtre LÖVE. Par exemple, s'il joue en mode fenêtré et qu'il clique sur son navigateur Internet, le jeu pourrait être notifié et automatiquement mettre en pause la partie.

love.quit

function love.quit()
  print("Thanks for playing! Come back soon!")
end

Cette fonction est appelée chaque fois que l'utilisateur clique sur le bouton de fermeture de fenêtre (souvent une croix). Par exemple, si l'utilisateur décide qu'il a fini de jouer, il peut cliquer sur le bouton Fermer. Puis, avant de se fermer, le jeu peut enregistrer son état.

Voilà pour les fonctions de « callback » et leur utilisation simple.



Autres langues