Fonctions spéciale ProcessingJS
-
0:00 - 0:03A ce stade, vous avez peut-être
réalisé que vous avez défini -
0:03 - 0:07une fonction particulière à chaque fois
que vous vouliez animer votre programme, -
0:07 - 0:09la fonction `draw`.
-
0:09 - 0:13En guise de rappel, voici à nouveau
notre program d'animation de voiture. -
0:13 - 0:17il a la variable appelée x,
qui commence avec une valeur de 11. -
0:17 - 0:23Puis dans la fonction `draw`, il dessine
la voiture à la position contenue dans x, -
0:23 - 0:27puis il ajoute trois à cette variable x,
et ceci à chaque appel de la fonction. -
0:27 - 0:29A cela nous donne une voiture
-
0:29 - 0:32qui se déplace constamment de
trois pixels à travers l'écran. -
0:32 - 0:35Donc voilà comment cela fonctionne.
-
0:35 - 0:38Maintenant que vous avez appris
à faire vos propres fonctions, -
0:38 - 0:42vous vous demandez peut-être,
ce qu'est cette fonction `draw`? -
0:42 - 0:44Pourquoi est elle nommée `draw`?
-
0:44 - 0:46Est-ce une fonction personnalisée?
-
0:46 - 0:49Et ce sont de très bonnes questions.
-
0:49 - 0:52Voyez vous, dans la
librairie ProcessingJS, -
0:52 - 0:56la fonction `draw` est l'une des
quelques fonctions prédéfinies -
0:56 - 1:01qui donne à notre programme un
meilleur contrôle de la zone de dessin. -
1:01 - 1:05Les fonctions prédéfinies sont celle
qui ont déjà été définies -
1:05 - 1:07par la librairie ProcessingJS.
-
1:07 - 1:11Mais d'habitude aucun code
n'y est défini. -
1:11 - 1:17Par exemple, dans la librairie
ProcessingJS, il y a un code comme ça: -
1:17 - 1:19`var draw = function() { }`
-
1:19 - 1:23Et là, c'est simplement vide,
complètement vide. -
1:23 - 1:29Comme nous chargeons ProcessingJS
dans chaque programme de la Khan Academy -
1:29 - 1:31Vous n'avez jamais vu ce code.
-
1:31 - 1:34Mais croyez moi, il existe.
-
1:34 - 1:41Maintenant je vais commenter cela, car
ProcessingJS le fait déjà pour nous. -
1:41 - 1:45Maintenant si vous redéfinissez `draw`,
dans votre program, -
1:45 - 1:50Cette nouvelle version masque
l'ancienne définition vide. -
1:50 - 1:52Et maintenant la fonction `draw`
-
1:52 - 1:55fait des choses passionnantes,
comme dessiner une voiture. -
1:55 - 2:01Maintenant la questions est: pourquoi la
fonction `draw` est appelée en continu? -
2:01 - 2:06Eh bien, il y a aussi du code
dans la librairie ProcessingJS -
2:06 - 2:11qui définit une minuterie et appel
la fonction `draw` de manière répétée, -
2:11 - 2:14encore et encore et encore.
-
2:14 - 2:19Nous devons nommer la fonction `draw`,
car c'est le nom de la fonction -
2:19 - 2:22que ProcessingJS appel de manière répétée.
-
2:22 - 2:28Si nous renommions cela, par emple
nous la renommons `drawCar`. -
2:28 - 2:34D'abord nous avons une erreur "undefined",
donc il faudrait écrire `var drawCar`. -
2:34 - 2:37Maintenant vous pouvez voir, si nous
renommons cela : `drawCar`, -
2:37 - 2:40nous ne voyons plus d'animation.
-
2:40 - 2:45Et c'est parce que cette fonction
n'est plus appelée de manière répétée, -
2:45 - 2:47car elle n'est pas nommée draw.
-
2:47 - 2:51Donc nous avons mis le code à
appeler de manière répétée -
2:51 - 2:56dans une fonction qui s'écrit `draw`.
-
2:56 - 3:01Donc je vais juste le refaire encore,
et je vais appeler `drawCar`ici. -
3:01 - 3:03Aha! Ca remarche.
-
3:03 - 3:07Ok, donc il a besoin de s'appeler draw,
-
3:07 - 3:13et cela veut aussi dire que vous ne devez
pas nommer vos propres fonctions `draw`, -
3:13 - 3:18a part si vous voulez qu'elle soit traitée
particulièrement et répétée en continu. -
3:18 - 3:24Et souvenez vous, vous ne pouvez pas avoir
plusieurs fonctions nommées `draw`. -
3:24 - 3:28Seul la dernière définition va
être prise en compte. -
3:28 - 3:31Si on a un `rect` la dedans--
-
3:31 - 3:35Donc la nous pouvons voir que notre
voiture n'est plus dessinée, -
3:35 - 3:40seul le rectangle est dessiné à la place,
car seul la dernière définition compte. -
3:40 - 3:43Donc débarrassons-nous de celle-là.
-
3:43 - 3:48La fonction draw n'est pas la seule
fonction prédéfinie -
3:48 - 3:50qui a un comportement spécial.
-
3:50 - 3:53Il y a aussi un groupe de fonctions
-
3:53 - 3:57pour répondre aux actions de la souris
et aux appuis de touches du clavier. -
3:57 - 4:02Disons que l'on veut un program
qui dessine une ellipse colorée -
4:02 - 4:05à l'emplacement ou l'utilisateur déplace
le pointeur de la souris. -
4:05 - 4:09Donc nous pouvons faire cela avec
une fonction comme ça. -
4:09 - 4:16[frappe au clavier]
-
4:20 - 4:23Ok, oh, magnifique.
-
4:23 - 4:27Maintenant, cette fonction est appelée
encore et encore, -
4:27 - 4:31même si l'utilisateur ne déplace
pas la souris, comme maintenant. -
4:31 - 4:35Et ce programme, il fonctionne, il fait ce
que nous voulons qu'il fasse. -
4:35 - 4:38Il dessine ces jolies ellipses
partout sur l'écran. -
4:38 - 4:42Mais en fait, il y a un meilleur
moyen de faire la même chose -
4:42 - 4:44qui est plus efficace.
-
4:44 - 4:52Nous pouvons changer la fonction `draw` en
`mouseMoved`, et voyons. -
4:52 - 4:55Ca marche toujours.
-
4:55 - 4:58Vous voyez, notre environnement regarde si
notre programme -
4:58 - 5:01à définit une fonction `mouseMoved` ,
-
5:01 - 5:05et si c'est le cas, il appel cette
fonction quand la souris se déplace. -
5:05 - 5:10Mais elle ne sera pas appelée
si l'utilisateur ne déplace pas la souris. -
5:10 - 5:13Donc avant, on appelait le code dans
la fonction `draw` lorsque -
5:13 - 5:16nous n'en avions pas besoins,
encore et encore -
5:16 - 5:20Et maintenant, on appelle ce code
dans `mouseMoved` -
5:20 - 5:23seulement lorsque mouseX ou mouseY
a changé. -
5:23 - 5:27Donc notre programme est plus efficace,
et c'est une bonne chose. -
5:27 - 5:31Généralement, si vous voulez changer le
résultat de votre programme -
5:31 - 5:35seulement quand l'utilisateur bouge la
souris, alors c'est mieux de coder -
5:35 - 5:37dans la fonction `mouseMoved`.
-
5:37 - 5:41Et il y a encore quelques autres
fonctions prédéfinies comme ça, -
5:41 - 5:45dont vous pouvez trouver plus d'exemples
dans la documentation. -
5:45 - 5:49Comme `mousePressed`, `mouseReleased`,
`keyPressed` et plus encore. -
5:49 - 5:54Donc souvenez-vous, si vous voulez
utiliser une fonction prédéfinie spéciale, -
5:54 - 5:59comme `mouseMoved` ou `draw`, écrivez-là
correctement, et utilisez-là correctement. -
5:59 - 6:03Si vous ne le faites pas, assurez-vous de
donner à vos fonctions personnalisée -
6:03 - 6:07un nouveau nom unique.
- Title:
- Fonctions spéciale ProcessingJS
- Description:
-
Cette vidéo est un enregistrement d'exposé interactif, téléversé pour simplifier la création de sous-titres. Regardez l'exposé interactif original sur Khan Academy, ou vous pouvez mettre pause et éditer le code et voir le code dans une meilleure résolution:
http://www.khanacademy.org/programming - Video Language:
- English
- Duration:
- 06:08
Alain Jacobi edited French subtitles for Special ProcessingJS functions |