2013/04/26

Eclipse + Processing で PGraphicsクラスを使う

Processing -- ver2.8b
Eclipse -- Juno

ProcessingをEclipseで書いていて、PGraphicsが使いたくなった。
しかし、公式リファレンス通り


import processing.core.PApplet;
import processing.core.PGraphics;

public class PGraphicsTest extends PApplet{

PGraphics pg;

public void setup() {
size(200, 200);
pg = createGraphics(100, 100);
}

public void draw() {
pg.beginDraw();
pg.background(102);
pg.stroke(255);
pg.line(pg.width*0.5F, pg.height*0.5F, mouseX, mouseY);
pg.endDraw();
image(pg, 50, 50);
}
}

と書くと、

Exception in thread "Animation Thread" java.lang.NoSuchMethodError: tracer.PGraphicsTest.createGraphics(II)Lprocessing/core/PGraphics;
at tracer.PGraphicsTest.setup(PGraphicsTest.java:12)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


とか出て死ぬ。
いろいろ試した結果、
size関数でレンダラを明示(デフォルトのはJAVA2Dという名前らしい)
creategraphicsも同じレンダラを指定すると動くみたい。

つまりこういうこと

import processing.core.PApplet;
import processing.core.PGraphics;

public class PGraphicsTest extends PApplet{

PGraphics pg;

public void setup() {
size(200, 200, JAVA2D);
pg = createGraphics(100, 100, JAVA2D);
}

public void draw() {
pg.beginDraw();
pg.background(102);
pg.stroke(255);
pg.line(pg.width*0.5F, pg.height*0.5F, mouseX, mouseY);
pg.endDraw();
image(pg, 50, 50);
}
}