Return to Video

Special ProcessingJS functions

  • 0:00 - 0:03
    Du merkst vielleicht, dass du jedes Mal,
  • 0:03 - 0:07
    wenn du dein Programm animieren wolltest,
    eine bestimmte Funktion verwendet hast -
  • 0:07 - 0:09
    die "draw"- Funktion.
  • 0:09 - 0:13
    Zur Erinnerung hier nochmal
    unser animiertes Auto-Programm.
  • 0:13 - 0:17
    Es hat die Variable x, die bei 11 anfängt.
  • 0:17 - 0:23
    Und in der "draw"-Funktion malt es
    das Auto bei dieser Variable x
  • 0:23 - 0:27
    und fügt dann jedes Mal drei zu
    dieser Variable x hinzu.
  • 0:27 - 0:29
    Und dadurch bekommen wir ein Auto,
  • 0:29 - 0:32
    das sich konstant drei Pixel schnell
    über den Bildschirm bewegt.
  • 0:32 - 0:35
    So funktioniert das.
  • 0:35 - 0:38
    Aber jetzt, wo du gelernt hast,
    eigene Funktionen zu machen,
  • 0:38 - 0:42
    könntest du dich fragen,
    "Was ist diese "draw"-Funktion?"
  • 0:42 - 0:44
    "Warum heißt sie immer "draw"?"
  • 0:44 - 0:46
    "Ist das eine vorgegebene Funktion?"
  • 0:46 - 0:49
    Und das sind gute Fragen.
  • 0:49 - 0:52
    Weißt du, in der ProcessingJS-Bibliothek
  • 0:52 - 0:56
    ist die "draw"-Funktion eine von wenigen
    vordefinierten Funktionen,
  • 0:56 - 1:01
    die unseren Programmen mehr Kontrolle
    darüber geben, was passiert.
  • 1:01 - 1:05
    Eine vordefinierte Funktion ist eine
    Funktion, die schon von der
  • 1:05 - 1:07
    ProcessingJS-Bibliothek definiert wurde.
  • 1:07 - 1:11
    Aber sie fängt üblicherweise als
    eine leere Definition an.
  • 1:11 - 1:17
    Zum Beispiel gibt es in der ProcessingJS-
    Bibliothek Code, der so aussieht:
  • 1:17 - 1:19
    'var draw = function() { }'
  • 1:19 - 1:23
    und dann ist sie einfach leer,
    komplett leer.
  • 1:23 - 1:29
    Wir laden die ProcessingJS-Bibliothek
    in jedes Programm hier auf Khanacademy,
  • 1:29 - 1:31
    also siehst du diesen Code nie.
  • 1:31 - 1:34
    Aber glaub mir, er existiert.
  • 1:34 - 1:41
    Den Code verstecke ich mit "comment",
    da ProcessingJS das schon für uns macht.
  • 1:41 - 1:45
    Wenn du jetzt in deinem eigenen Programm
    "draw" neu definierst, überschreibt
  • 1:45 - 1:47
    diese neue Definition die alte.
  • 1:47 - 1:50
    Und jetzt macht die "draw"-Funktion
  • 1:50 - 1:52
    spannende Dinge,
    zB. malt sie ein Auto.
  • 1:52 - 1:55
    Jetzt ist die Frage: Warum wird die
    "draw"-Funktion immer wiederholt?
  • 1:55 - 2:01
    Nun ja, in der ProcessingJS-Bibliothek
    ist auch Code, der einen
  • 2:01 - 2:06
    Browser-Timer setzt und die
    "draw"-Funktion wiederholt aufruft,
  • 2:06 - 2:11
    wieder und wieder und wieder.
  • 2:11 - 2:14
    Wir müssen die Funktion "draw" nennen,
    weil das der Name
  • 2:14 - 2:19
    der Funktion ist, die ProcessingJS
    wiederholt aufruft.
  • 2:19 - 2:22
    Wenn wir ihr einen neuen Namen geben,
    nehmen wir "drawCar",
  • 2:22 - 2:28
    bekommen wir einen undefinierten Fehler,
    also sagen wir 'var drawCar.
  • 2:28 - 2:34
    Jetzt kannst du sehen, dass wir, wenn wir
    sie zu "drawCar" umbenennen,
  • 2:34 - 2:37
    keine Animation mehr sehen.
  • 2:37 - 2:40
    Und das liegt daran, dass die Funktion
  • 2:40 - 2:45
    nicht wiederholt aufgerufen wird,
    weil sie nicht "draw" heißt.
  • 2:45 - 2:47
    Also müssen wir Code, den wir
    mehrmals aufrufen wollen,
  • 2:47 - 2:51
    in eine Funktion namens "draw" einfügen.
  • 2:51 - 2:56
    Also werde ich das wieder tun und einfach
    "drawCar" von hier aufrufen.
  • 2:56 - 3:01
    Aha! Wir haben es wieder.
  • 3:01 - 3:03
    Okay, also muss es "draw" heißen,
  • 3:03 - 3:07
    und das heißt auch, dass du deine eigenen
    Funktionen nicht "draw" nennen solltest,
  • 3:07 - 3:13
    es sei denn, du willst, dass sie besonders
    behandelt und wiederholt aufgerufen werden.
  • 3:13 - 3:18
    Und denk dran, du kannst nicht mehrere
    Funktionen haben, die "draw" heißen.
  • 3:18 - 3:24
    Nur die letzte Definition zählt.
  • 3:24 - 3:28
    Wenn wir hierdrin ein "rect" hätten--
  • 3:28 - 3:31
    Jetzt können wir sehen, dass unser Auto
    nicht mehr gemalt wird
  • 3:31 - 3:35
    und stattdessen nur das Rechteck,
    weil nur die letzte Definition zählt.
  • 3:35 - 3:40
    Also lass uns das löschen.
  • 3:40 - 3:43
    "draw" ist nicht die einzige
    vordefinierte Funktion,
  • 3:43 - 3:48
    die dieses besondere Verhalten hat.
  • 3:48 - 3:50
    Es gibt auch einen Haufen Funktionen,
  • 3:50 - 3:53
    die auf Mausbewegungen und
    Tastatur reagieren.
  • 3:53 - 3:57
    Zum Beispiel wollen wir ein Programm, das
    eine farbige Ellipse dahin malt,
  • 3:57 - 4:02
    wo der Nutzer seine Maus hinbewegt.
  • 4:02 - 4:05
    Das könnten wir mit einer solchen
    Funktion machen.
  • 4:05 - 4:09
    [tippt]
  • 4:09 - 4:16
    Okay, oh, das ist schön.
  • 4:20 - 4:23
    Jetzt wird diese Funktion immer wieder
    aufgerufen,
  • 4:23 - 4:27
    selbst wenn der Nutzer die Maus
    gar nicht bewegt, so wie jetzt.
  • 4:27 - 4:31
    Und dieses Programm funktioniert,
    es tut, was wir wollen
  • 4:31 - 4:35
    es malt diese tollen Ellipsen überall
    auf den Bildschirm.
  • 4:35 - 4:38
    Aber tatsächlich gibt es eine bessere Art,
    das Gleiche zu tun,
  • 4:38 - 4:42
    die effizienter ist.
  • 4:42 - 4:44
    Ändern wir die "draw"-Funktion
    zu "mouseMoved"
  • 4:44 - 4:52
    funktioniert es immer noch.
  • 4:52 - 4:55
    Es ist so, unsere Umgebung überprüft
    Programme,
  • 4:55 - 4:58
    um zu sehen, ob eine "mouseMoved"-Funktion
    darin definiert wurde, und wenn ja,
  • 4:58 - 5:01
    ruft sie die Funktion auf, wenn die Maus
    bewegt wird.
  • 5:01 - 5:05
    Aber sie wird nicht aufgerufen werden,
    wenn der Nutzer die Maus nicht bewegt.
  • 5:05 - 5:10
    Also, vorher haben wir den Code in der
    "draw"-Funktion aufgerufen,
  • 5:10 - 5:13
    als wir es nicht mussten, immer wieder.
  • 5:13 - 5:16
    Und jetzt rufen wir nur diesen Code
    in "mouseMoved" auf,
  • 5:16 - 5:20
    wenn mouseX oder mouseY
    sich tatsächlich ändern.
  • 5:20 - 5:23
    Also ist unser Programm effizienter,
    und das ist gut.
  • 5:23 - 5:27
    Allgemein, wenn du nur dann den
    Programm-Output ändern willst,
  • 5:27 - 5:31
    wenn der Nutzer die Maus bewegt,
    ist es besser, diesen Code
  • 5:31 - 5:35
    in der "mouseMoved"-Funktion zu haben.
  • 5:35 - 5:37
    Und es gibt noch viel mehr
    vordefinierte Funktionen,
  • 5:37 - 5:41
    von denen du Beispiele in der
    Dokumentation sehen kannst.
  • 5:41 - 5:45
    So wie "mousePressed", "mouseReleased",
    "keyPressed" und weitere.
  • 5:45 - 5:49
    Also denk dran, wenn du eine spezielle
    vordefinierte Funktion verwenden willst,
  • 5:49 - 5:54
    wie "mouseMoved" oder "draw",
    dann schreibe und verwende sie richtig.
  • 5:54 - 5:59
    Wenn du das nicht willst, stell sicher,
    dass deine eigenen Funktionen
  • 5:59 - 6:03
    neue, einzigartige Namen haben.
Title:
Special ProcessingJS functions
Description:

"Besondere ProcessingJS-Funktionen"

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

German subtitles

Revisions