< Return to Video

Fonctions spéciale ProcessingJS

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

more » « less
Video Language:
English
Duration:
06:08

French subtitles

Revisions