Difference between revisions of "Tutorial:Callback Functions (Français)"
(→love.quit) |
|||
Line 1: | Line 1: | ||
− | Les fonctions [[:Category:Callbacks (Français)|callback]] dans LÖVE | + | 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. |
+ | |||
+ | 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]]== | ==[[love.load (Français)|love.load]]== | ||
Line 11: | Line 13: | ||
end | end | ||
</source> | </source> | ||
− | 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. | + | 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 (Français)|love.update]]== | ==[[love.update (Français)|love.update]]== | ||
Line 17: | Line 19: | ||
function love.update(dt) | function love.update(dt) | ||
if love.keyboard.isDown("up") then | if love.keyboard.isDown("up") then | ||
− | num = num + 100 * dt -- | + | num = num + 100 * dt -- Cela incrémentera num par 100 à chaque seconde |
end | end | ||
end | end | ||
</source> | </source> | ||
− | Cette fonction est appelée en permanence et sera probablement l'endroit où la plupart de vos calculs seront | + | 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 (Français)|love.draw]]== | ==[[love.draw (Français)|love.draw]]== | ||
Line 27: | Line 29: | ||
function love.draw() | function love.draw() | ||
love.graphics.draw(image, imgx, imgy) | love.graphics.draw(image, imgx, imgy) | ||
− | love.graphics.print(" | + | 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 (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 | + | <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(" | + | 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(" | + | love.graphics.print("Ce texte est rouge", 100, 200) |
end | end | ||
</source> | </source> | ||
Line 48: | Line 50: | ||
function love.mousepressed(x, y, button,istouch) | function love.mousepressed(x, y, button,istouch) | ||
if button == 1 then | if button == 1 then | ||
− | imgx = x -- | + | imgx = x -- déplace l'image à l'emplacement du clic de souris |
imgy = y | imgy = y | ||
end | end | ||
end | end | ||
</source> | </source> | ||
− | Cette fonction est appelée chaque fois qu'un bouton de la souris est pressé | + | 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 (Français)|love.mousereleased]]== | ==[[love.mousereleased (Français)|love.mousereleased]]== | ||
Line 64: | Line 66: | ||
end | end | ||
</source> | </source> | ||
− | Cette fonction 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)|.mousepressed]]</code>, ces 2 fonctions ne sont absolument pas liées. | + | 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)|.mousepressed]]</code>, ces 2 fonctions ne sont absolument pas liées. |
==[[love.keypressed (Français)|love.keypressed]]== | ==[[love.keypressed (Français)|love.keypressed]]== | ||
Line 76: | Line 78: | ||
end | end | ||
</source> | </source> | ||
− | Cette fonction 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>. | + | 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 (Français)|love.keyreleased]]== | ==[[love.keyreleased (Français)|love.keyreleased]]== | ||
Line 88: | Line 90: | ||
end | end | ||
</source> | </source> | ||
− | 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>, elles ne sont absolument pas liées. | + | 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. |
==[[love.focus (Français)|love.focus]]== | ==[[love.focus (Français)|love.focus]]== |
Revision as of 19:20, 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.
Contents
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) -- this totally awesome custom function is defined elsewhere
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 .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
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