Post date: May 2, 2015 11:22:46 AM
リフレクションとか使いたい人間にとって,ProcessingのコードはうざったいくらいJavaのコードから遠い.
colorなんて型Javaにはないし,
int(1.5)とかでキャスト出来るのも意味がわからない.
じゃあリフレクションとかJavaCompilerに投げれるようにJavaのコードに変換する必要がある.
それを自分で書くのも癪なので,Processingのコードから引っ張ってくる.(途中まで書いてしまったんだけど.)
必要なjarファイルは2つ.「pde.jar」と「antlr.jar」.
どちらもダウンロードしてきたProcessingのlibファイルに転がってるのを拝借する.(codeフォルダにコピー)
ソースは次みたいな感じ.
import antlr.*; import processing.mode.java.preproc.*; import java.io.*; String javaStr=null; PdePreprocessor preproc=new PdePreprocessor("Test",2); String p5code="void setup(){size(640,480);} void draw(){background(0,0,255);}"; Writer stream=new StringWriter(); try { preproc.write(stream, p5code); javaStr=stream.toString(); } catch(Exception e) { e.printStackTrace(); } finally { try { stream.close(); } catch(Exception e) { e.printStackTrace(); } } println(javaStr);
気になる記述は2つ.
まず,5行目.
PdePreprocessor preproc=new PdePreprocessor("Test",2);
String p5code="void setup(){size(640,480);} void draw(){background(0,0,255);}";
"Test"は出力するクラスの名前.
2というのはインデントの大きさ.これだと空白2つ分.
"void setup(){size(640,480);} void draw(){background(0,0,255);}"は変換したいprocessingのコード.
こんなに簡単に引っ張ってこれるとは思ってなかった.