swingをprocessingライクで使えるようにした
Post date: Feb 21, 2014 6:24:55 AM
processingをずっと使ってると,javaのswing(場合によってはawtすら)を使えなくなってしまう.(俺だけか?)
なのでずっとループする部分をスーパークラスとして作っておいて,サブクラスでpublic void setup()とpublic void draw() をオーバーライドして動作を決定できるようにしてみた.
ここにpsglike.jarを入れておく.多分,ラプラスかなにかで解凍すればソースは出てくるはず.
ソースを見ればわかるが,Timer使ってループでpaintさせてるだけ.使いやすいようにmouseX,mouseY,width,height,void println()も用意しておいてみた.
※mouseDragged,mouseMoved,componentResized,componentMovedをオーバーライドする場合はsuper(event);とか呼び出してあげないとmouseX,mouseY,width,heightが機能しなくなる.
ちなみにサブクラスの記述は以下のような感じになる.
package psgLike;//ココは人によりけり
import java.awt.Color;
import java.awt.Graphics;
public class TestMain extends PsgLike{
public static void main(String args[]) {
init(new TestMain(),320,240);//後ろ2つの引数はウインドウサイズ
}
public void setup(Graphics g){}//なくてもいい
public void draw(Graphics g){
g.setColor(new Color(0,0,255));
g.fillOval(mouseX-25, mouseY-25, 50, 50);
}
}
問題点:
全部publicで宣言する必要性
さっきの「オーバーライドする場合はsuper(event);」がめんどい
まだイメージのロードとかしてないので有用性については疑問符が付く.(各種loadImage的なのについては実装する必要ありそう?)