[JAVA] Werfen Sie einen Blick darauf, wie Processing 3 funktioniert

Einführung

In diesem Artikel werde ich erklären, wie die Einstellungen (), setup () und draw () von Processing 3.3.5 (Stand: 7/2) funktionieren. Es ist keine Beschreibung der IDE. Wenn Sie Fehler oder weitere interessante Informationen haben, teilen Sie uns dies bitte in den Kommentaren mit!

Wie man es herausfindet

https://github.com/processing/processing

This is the official source code for the Processing Development Environment (PDE), the “core” and the libraries that are included with the download.

Also werde ich den offiziellen Quellcode von Processing lesen.

Weitere Informationen zur Funktionsweise der Verarbeitung finden Sie in core / src / process.

Definitionen von "settings ()", "setup ()" und "draw ()"

Alle drei dieser Funktionen sind in PApplet.java definiert. Schauen wir uns jeden an.

settings()

  public void settings() {
    // is this necessary? (doesn't appear to be, so removing)
    //size(DEFAULT_WIDTH, DEFAULT_HEIGHT, JAVA2D);
  }

code link

setup()

  public void setup() {
  }

code link

draw()

  public void draw() {
    // if no draw method, then shut things down
    //System.out.println("no draw method, goodbye");
    finished = true;
  }

code link

Fast nichts ist geschrieben ...

Der Code, den Sie in Processing schreiben, ist tatsächlich eine Klasse, die von "PApplet" erbt. Wenn ich den folgenden Code ausführe, wird "true" zurückgegeben.

println(this instanceof PApplet);

Die Verarbeitung wird unter der Annahme geschrieben, dass "settings ()", "setup ()" und "draw ()" von "PApplet" überschrieben werden. Das Schreiben von "@ Override" vor dem Code gibt keinen Fehler aus.

Wo werden die einzelnen Funktionen verwendet?

settings () wird von einer Funktion namens handleSettings () aufgerufen. Außerdem werden "setup ()" und "draw ()" von der Funktion "handleDraw ()" aufgerufen. Beide sind in "PApplet".

handleSettings() Danach wird es in PApplet in der Reihenfolge runSketch ()main ()aufgerufen. Nebenbei wird in dieser Funktion eine boolesche Typvariable namens "insideSettings" verwendet. Die Verarbeitungen glatt () und noSmooth () funktionieren nur, wenn die Variable insideSettings wahr ist. Beachten Sie, dass die Verarbeitung nur im wahren Zustand in settings () erfolgen kann. Es gab tatsächlich eine bedürftige Person.

code link

handleDraw()

setup () wird aufgerufen, wenn frameCount == 0 und draw () anders aufgerufen wird. Dies ist auch eine kleine Geschichte, aber da frameCount eine öffentliche Variable ist, können Sie den numerischen Wert frei ändern. Wenn Sie dies in frameCount = -1 und draw () tun, wird setup () aufgerufen. Sie haben keine Chance, es zu verwenden, aber es ist eine der Sicherheitslücken bei der Verarbeitung.

code link

AnimationThread

Ein Thread namens AnimationThread ist in der Klasse "PSurfaceNone" definiert. handleDraw () wird von callDraw () darin aufgerufen und läuft in run () weiter, bis die Endbedingung von der while-Anweisung erfüllt wird.

Zusammenfassung

Bisher habe ich erklärt, wie die "settings ()", "setup ()" und "draw ()", die wir immer in Processing geschrieben haben, funktionieren. Ich hoffe, Sie sind mit diesem Artikel zufrieden.

Endlich wieder eine kleine Geschichte

handleDraw () ist öffentlich und kann überschrieben werden. Fügen Sie einfach den folgenden Code in den Code einer anderen Person ein und "setup ()" und "draw ()" werden nicht aufgerufen.

void handleDraw() {
}

Dies ist auch eine Verarbeitungsanfälligkeit. Ist es in Ordnung Verarbeitung ...

Recommended Posts

Werfen Sie einen Blick darauf, wie Processing 3 funktioniert
Wie jul-to-slf4j funktioniert
So machen Sie einen Screenshot mit dem Android Studio-Emulator
Ich habe einen Blick in die Java HashMap geworfen
Schauen wir uns das Verfahren zum Starten der Hotspot-JVM an
Werfen wir einen Blick auf den Bildschirm von Quant Analyzer!
Schauen Sie sich Kotlin aus einer effektiven Java-Perspektive an