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.