Vous vous êtes probablement aperçu que
vous avez déjà définit une fonction spéciale
à chaque fois que vous avez fait des animations
dans vos programmes : la fonction "draw"
Pour rappel, voici le programme
qui anime une voiture...
vous avez "var x=11"
qui représente la position de départ
et la fonction "draw" contient
tout le code de dessin
et on augmente "x" de 3 à chaque fois.
Et en redémarrant le programme,
la voiture bouge.
Maintenant que vous savez comment
faire vos propres fonctions,
vous vous demandez peut être à quoi
correspond cette fonction "draw" ?
Est-ce une fonction spéciale, pourquoi
est-elle appelée "draw",...
Ce sont de très bonnes questions.
Alors... Dans notre environnement,
ici à Khan Academy,
il y a quelques fonctions spéciales,
je les appelle des "fonctions magiques".
Mais c'est juste moi qui les appelle comme ça.
Quand on fait fonctionner VOS fonctions,
on regarde d'abord pour voir si vous définissez
des fonctions avec certains noms.
comme "draw", et, si c'est le cas,
on les appel à certains moments.
Par exemple, si vous définissez
une fonction "draw" dans votre code,
on va trouver cette fonction, on va
regarder le code qui est à l'intérieur
et on va appeler ce code tant que possible,
le plus vite possible, sans s'arrêter.
Si vous n'avez pas de fonction "draw",
on n'aura rien à appeler.
Ça veut dire aussi que si on change
le nom de cette fonction, en... "drow"
OK, ça ne fonctionne plus.
ou en "dessineVoiture"...
OK, ça ne marche plus, non plus.
Donc si on change son nom,
le programme ne la trouvera pas,
et du coup, elle ne sera pas appelée.
Et du coup, le code ne sera pas
appelé régulièrement,
il sera tout simplement jamais appeler !
Cela veut dire aussi que vous ne devriez pas
appeler vos propres fonctions "draw"
sinon, elle sera appelée en permanence !
OK. "draw()" n'est pas la seule
fonction magique disponible.
Il y a un groupe de fonctions qui sont appelée sur
des évènements de la souris ou du clavier.
Prenons un autre exemple d'animation.
Si on veut dessiner une balle colorée en fonction
des mouvements de la souris...
on utilise la fonction "draw", puis "fill()",
et on dessine "ellipse" à "(mouseX, mouseY, 10, 10)"
Essayons ça.... OK. Cool !
On a une balle colorée qui est dessinée à l'endroit
de la souris !
OK. Le code du dessin qui fait le dessin,
va être appelé en permanence, pour toujours,
parce qu’on l'a mis dans
une fonction appelée "draw".
Elle sera appelée, même si la souris
ne bouge pas.
Elle est appelée en ce moment,
alors que je ne bouge pas.
Pour faire ça, il y a une façon de faire
plus efficace.
Ce qu'on peut faire, c'est changer la fonction "draw"
en "mouseMoved" ("souris a bougé").
Notre environnement vérifie également si le programme
définit une fonction appelée "mouseMouved".
Si c'est le cas, il va appeler cette fonction
à chaque fois que la souris bouge.
Vous voyez... ça fonctionne toujours.
Mais elle n'est plus appelée si la souris ne bouge plus.
Si j'arrête ma souris, la fonction n'est plus appelée.
Avant, avec la fonction "draw", le code était exécuté
en permanence, même si la souris ne bougeait pas.
Maintenant, en utilisant "mouseMouved", le code n'est
appelé que si la souris bouge.
Donc notre programme est bien plus efficace.
En général, si votre programme a besoin
d'agir quand la souris bouge,
il est meilleur de mettre le code
dans la fonction "mouseMouved"
au lieu d'utiliser la fonction "draw".
Il y a un paquet de fonctions magiques
comme "mouseMouved".
Il y a "mousePressed", "mouseReleased",
"keyPressed",...
Lisez la documentation à propos de ces fonctions.
Elles vous serviront !
Le point important, ici, c'est que si vous voulez
utiliser une fonction magique,
appelez-la comme il faut !
Si vous ne voulez pas l'utiliser,
appelez vos fonctions autrement.