proce55ing PApplet(2)

ようやく少し頭が整理できた。

  • PApplet の draw() メソッドは継承して上書きされることを前提にしている空のメソッド。Java 的には多分あまりよろしくない。普通の使い方では P5 Syntax で書かれたスケッチが自動的に PApplet のサブクラスに変換される。
  • Jython は Introspector を使って、JavaBeans(Swing 含む) を簡潔に操作できる。
  • Java の世界では、クラスしか無いので、イベントリスナーもクラスとなる。ただし簡潔に記述するため無名クラスを使うこともできる。
  • Jython(=Python) の世界では、関数がファーストクラスで、イベントリスナーを素直に関数としてより簡潔に記述できる。
  • PApplet の draw() メソッドは、 PApplet.handleDraw() から周期的に呼び出される。(frameRate)
  • これは、PApplet が周期的にイベントを発生させ、それに対する(唯一の)リスナー(PApplet 自身)が存在している、とも見なせる。無理矢理そうみなしてクラスに手を入れると、 PApplet と draw を切り離すことができる。切り離せると、PApplet をサブクラス化しなくとも、リスナーだけ記述して PApplet に設定すれば挙動をカスタマイズできる。
  • P5 syntax は draw() しか記述せずとも Preprocessor で完全な java のクラス定義を生成する便利なものだが、Jython の対話環境と上記の改変を行えば、記述する量はほぼ同等にできる。