[JAVA] Jetez un œil au fonctionnement de Processing 3

introduction

Dans cet article, je vais vous expliquer comment fonctionnent les paramètres settings (), setup () et draw () de Processing 3.3.5 (dernier en date du 7/2). Ce n'est pas une description de l'EDI. Si vous avez des erreurs ou des informations plus intéressantes, veuillez nous le faire savoir dans les commentaires!

Comment comprendre

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.

Je vais donc lire le code source officiel de Processing.

Vous pouvez en savoir plus sur le fonctionnement du traitement dans core / src / processing.

Définitions de settings (), setup (), et draw ()

Ces trois fonctions sont définies dans PApplet.java. Regardons chacun d'eux.

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

Presque rien n'est écrit ...

Le code que vous écrivez dans Processing est en fait une classe qui hérite de PApplet. Lorsque j'exécute le code suivant, il renvoie «true».

println(this instanceof PApplet);

Le traitement est écrit en supposant qu'il remplacera settings (), setup () et draw () de PApplet. Ecrire «@ Override» avant le code ne donne pas d'erreur.

Où chaque fonction est-elle utilisée?

settings () est appelé par une fonction appelée handleSettings (). De plus, setup () et draw () sont appelés par la fonction handleDraw (). Les deux sont dans PApplet.

handleSettings() Après cela, dans PApplet, il sera appelé dans l'ordre de runSketch ()main (). En passant, une variable de type booléen appelée ʻinsideSettingsest utilisée dans cette fonction. Les traitementssmooth ()etnoSmooth () ne fonctionnent que si la variable ʻinsideSettings est vraie. Notez que le traitement ne peut être effectué que dans l'état vrai dans settings (). Il y avait en fait une personne dans le besoin.

code link

handleDraw()

setup () est appelé quand frameCount == 0, etdraw () ʻest appelé autrement. C'est aussi une petite histoire, mais commeframeCountest une variable publique, vous pouvez changer librement la valeur numérique. Si vous le faites dansframeCount = -1 et draw (), setup ()` sera appelé. Vous n'aurez aucune chance de l'utiliser, mais c'est l'une des vulnérabilités de traitement.

code link

AnimationThread

Un Thread appelé AnimationThread est défini dans la classe PSurfaceNone. handleDraw () est appelé par callDraw () dedans, et continue à boucler dans run () jusqu'à ce que la condition de fin soit remplie par l'instruction while.

Résumé

Jusqu'à présent, j'ai expliqué comment fonctionnent les paramètres settings (), setup () et draw () que nous avons toujours écrits dans Processing. J'espère que vous êtes satisfait de cet article.

Enfin encore une petite histoire

handleDraw () est public et peut être remplacé. Mettez simplement le code suivant dans le code de quelqu'un d'autre et setup () et draw () ne seront pas appelés.

void handleDraw() {
}

Il s'agit également d'une vulnérabilité de traitement. Est-ce que ça va Traitement ...

Recommended Posts

Jetez un œil au fonctionnement de Processing 3
Comment fonctionne jul-to-slf4j
Comment faire une capture d'écran avec l'émulateur Android Studio
J'ai jeté un coup d'œil à l'intérieur du Java HashMap
Jetons un coup d'œil à la procédure de démarrage de la JVM Hotspot
Jetons un coup d'œil à l'écran de Quant Analyzer!
Jetez un œil à Kotlin dans une perspective Java efficace