LoginSignup
0
0

More than 3 years have passed since last update.

複数のクラスでPAppletを動作させる(Eclipse)

Last updated at Posted at 2021-02-15

困ったこと

setupdrawメソッドが存在するメインクラスでは Processing の機能が適切に動作しますが,メインクラス以外のクラスでは PApplet による Processing の機能が適切に動作しませんでした.

【失敗】試したこと

どうしようもないため,とりあえずメインクラスと同様に PApplet を継承すれば動作するだろうと期待し,

ClassSub(Java)
public class ClassSub extends PApplet
{
    ...
}

と記述しましたが,rectimageといったメソッドは使用できませんでした.

【成功】試したこと

結果としてメインクラスからのインスタンス生成時に PApplet 型の変数を対象のクラスに渡すことで解決しました.

ClassSub(Java)
private PApplet root;

public class ClassSub
{
    ClassSub(PApplet root, ...)
    {
        this.root = root;
        ...
    }
}
ClassMain(Java)
public class ClassMain
{
    ClassSub subClass = new ClassSub(this, ...);
}

また,Processing のメソッドを呼び出すときは

root.image(imagePath, x, y);
root.rect(x, y, width, height);

のように,先頭にPApplet型の変数からの静的呼び出しで使えます.

補足

ちなみに Processing エディタにおいて,クラス管理のために複数のタブにクラスを分けて記述しますが,内部的にはすべてインナークラスとしてコンパイルされているようです.(下記)

class ClassMain
{
    setup() {...}
    draw() {...}

    class ClassSub()
    {
        ...
    }
}

だから,Processing では複数のタブに分けてクラス管理をしても Processing の機能が使えるんですね...
(すべてメインクラスにぶち込んだら動くに決まってる!笑)

そのため,初めは Eclipse も Processing と同様に複数のタブにクラスを記述しても動作するだろうと思っていました...(数時間ロス)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0