EclipseでProcessingを動かす
参考サイト(英語)→http://processing.org/learning/tutorials/eclipse/
Eclipseを導入してからのお話です。
新しいプロジェクトを作る
File→New→ProjectでJava Projectを作成。
ライブラリの追加
processing/lib/core.jarがprocessingのコアライブラリのようです。これをEclipseに追加します。
File→Import→General→File System→Browsでフォルダ選択できるのでprocessing\libフォルダを選択します。
例えばProgram Filesにprocessingを導入したなら下のフォルダを選択します。
C:\Program Files\processing\lib
画面にライブラリ一覧が表示されるので、core.jarを選択します。プロジェクトツリーの中にcore.jarが加わりました。
ビルドパスを通す
追加されたcore.jarを選択して右クリック→BUILD PATH→ADD TO BUILD PATH で作業完了です。
processingを動かす
FILE → NEW → CLASSで HelloProcessingという名前を入力すると、HelloProcessingというクラスができます。
プログラムを書く前に、core.jarをインポートする必要があります。
import processing.core.*;
最もシンプルなクラスのひな形はこんな感じです。
import processing.core.*; public class HelloProcessing extends PApplet { public void setup() { //ここで初期化 } public void draw() { //ここで描画 } }
作品をつくってみましょう。
import processing.core.*; public class HelloProcessing extends PApplet { public void setup() { size(400, 400); background(0, 0, 0); smooth(); strokeWeight(5); } public void draw() { noStroke(); fill(0,10); rect(0,0,width,height); stroke(255); if (mousePressed) { line(mouseX,mouseY,pmouseX,pmouseY); } } }
完成したら、RUN→ RUN AS→JAVA APPLETでウインドウが現れて描いた絵が表示されます。
アプリケーションの作成
作成したクラスのメソッドにmainを追加します。
public static void main(String args[]){ PApplet.main(new String[] { "--present", "HelloProcessing" }); }
引数は、もしパッケージを作成していないなら"作成したクラス名"
パッケージを作ってその中に作成したクラスなら、"パッケージ名.クラス名"と書きます。
例えば、パッケージ"root"を作ってrootの中にHelloProcessingクラスを作成したとしましょう。
package root; import processing.core.*; public class HelloProcessing extends PApplet {
このときは"root.HelloProcessing"と書きます。
あとはRUN →RUN AS→JAVA APPLICATION でアプリケーションとして実行することができます。
import processing.core.*; public class HelloProcessing extends PApplet { public void setup() { size(400, 400); background(0, 0, 0); smooth(); strokeWeight(5); } public void loop(){ } public void draw() { noStroke(); fill(0,10); rect(0,0,width,height); stroke(255); if (mousePressed) { line(mouseX,mouseY,pmouseX,pmouseY); } } public static void main(String args[]){ PApplet.main(new String[] { "--present", "HelloProcessing" }); } }
クラスの追加方法
円を描くためのCircleクラスを追加してみます。
public class Circle { Circle() { } void draw() { fill(255,100); noStroke(); float x=random(0,width); float y=random(0,height); ellipse(x,y, 40, 40); } }
このままでは、PAppletについて何も知らないので、fillやrandomメソッドを呼び出すことはできません。
まずPAppletをインポートします。
import processing.core.PApplet;
実行するとPApplet(アプレットそのもの)が一つ作られるので、その参照をCircleクラスに教える必要があります。
Circleクラスは自分が描かれるPAppletについて常に知っている必要があるので、メンバ変数としてPAppletを持つことにします。
public class Circle { PApplet parent;
他のクラスや本体からCircleクラスを作成する際に、コンストラクタの引数を通してPAppletの参照を教えてもらうことにします。
public class Circle { PApplet parent; Circle(PApplet p) { parent = p; }
あとはparentを通してPAppletのメソッドを呼び出すことができるようになります。
メソッドを使うときは、
parent.width parent.fill(255,100);
などのように書きます。
Circleクラスを利用する
Circleクラスをmainから利用するには、PAppletつまり自分自身をCircleに伝えないといけないので、thisをコンストラクタに渡します。
Circle circle = new Circle(); //誤 Circle circle = new Circle(this); //正
あとはそのままメソッドを利用することができます。
circle.draw();
最初の例に円の描画を追加したものです。
Circle.java
import processing.core.PApplet; public class Circle { PApplet parent; Circle(PApplet p) { parent = p; } void draw() { parent.fill(255,50); parent.noStroke(); float x=parent.random(0,parent.width); float y=parent.random(0,parent.height); float r=parent.random(1,20); parent.ellipse(x,y, r, r); } }
HelloProcessing.java
import processing.core.*; public class HelloProcessing extends PApplet { public void setup() { size(400, 400); background(0, 0, 0); smooth(); strokeWeight(5); } public void draw() { noStroke(); fill(0,5); rect(0,0,width,height); stroke(random(100,255),random(100,255),random(100,255)); if (mousePressed) { line(mouseX,mouseY,pmouseX,pmouseY); Circle circle = new Circle(this); circle.draw(); } } }