ProcessingでJBox2Dを動かすテストのプログラムをAndroidで動かしたらどうなるのかやってみた。
Processingには通常のデスクトップ上で動くモードの他に、Android上で動かすモードやJavaScriptに変換してブラウザ上で動かすモードがある。(Androidの開発環境はインストール済みの前提で)AndroidモードにしてAndroidの端末をUSBで接続して普通に実行するとAndroid用のプロジェクトが作られてビルド、インストールされて動いた。すげー。Box2Dのタイムステップ1/60秒、velocityIterations=6、positionIterations=2で吊り橋でも60FPS出てるよ。
どうやって動いているのかというのに興味がある。
Android用のプロジェクトはテンポラリ(/var/folders/??/????/T/android??/)に作られる。エクスポートは「まだ実装してない」というエラーメッセージが出る。単にプロジェクトをどこか指定のディレクトリに吐き出してくれるだけでいいんだけど。
Processingで書いたプログラムはコンパイルされてPAppletクラスを継承した1つのクラスにまとめられて、src/processing/test/プロジェクト名/プロジェクト名.javaとして作られる。 含まれるjarライブラリは processing-core.jar と今回使った jbox2d.jar のみ。よくできてるなー。
起動するActivityとかはどうなってるんだろうか?AndroidManifest.xmlに書かれているのは生成されたプロジェクトのクラスで、それは単にPApplet
を継承しているだけ。ということはPApplet
がActivity
を継承しているはず。
Processingがgoogle code上で開発されていた頃はAndroid用のPAppletクラスが用意されていたっぽいけど、githubに移った今はAndroidモードのプロジェクトが分離されているので、デスクトップで使っているPApplet
と同じものを使っていると推測するのだが。関連のチケットもクローズになっているけどどうなっているのかよくわからなかった。