-
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.