忘れそうなのでメモ。
container という空の Sprite に circle という Sprite を配置して、container の MouseEvent を取得すると、ターゲットの値が circle になってしまう。
MouseEvent - ActionScript 3.0 コンポーネントリファレンスガイド:
ネストされたノードが関係する場合、マウスイベントは、表示リストで確認できる最も深くネストされたノードをターゲットにします。
このターゲットを container にするには、container の mouseChildren プロパティを fasle に設定すればよい。
mouseChildrenプロパティ
var container:Sprite = new Sprite();
container.name = "container";
addChild(container);
var circle:Sprite = new Sprite();
circle.name = "circle";
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(40, 40, 40);
container.addChild(circle);
container.mouseChildren = false;
container.addEventListener(MouseEvent.CLICK, clicked);
function clicked(event:MouseEvent):void
{
trace(event.target.name); // container
}
container.mouseChildren = false; の行があるかないかで変わってくる。
Processing 標準の IDE が、コードの補完をしてくれなくて使い辛いので、普段 mac では TextMate を使っていたんだけど、windows でも何かエディターがあれば便利だよなあと思い探してみました。
ざっと調べてみた結果、標準以外で開発する場合は下記の手段がある(まだあるかもしれない)。
mac
・Xcode
・TextMate
・Eclipse
win
・jEdit
・Eclipse
このうち共通するのは Eclipse のみ!ということで、WindowsでのProcessing用エディタ1Eclipse編を参考に思い切って導入してみた。
やってみたら意外と簡単で、Eclipse インストールして、新規で java のプロジェクト作って、ライブラリで processing の lib フォルダに入ってる core.jar を追加するだけのことだった。
ただ、標準と書き方が若干違っていて、
import processing.core.*;
public class HelloP5 extends PApplet
{
public void setup()
{
}
public void draw()
{
}
}
みたいに書くことになる。標準の書き方よりは長くなってしまうけど、個人的には逆にこっちのほうが as3 っぽいのでイイかもしれない。
今まで processing やってきたことは PApplet を拡張した java だったんか!ってのを、実際やってみて改めて気付きました。
あと調べててわかったのは、標準の IDE で複数のタブを使ってクラス書いてたのは、実は一つに結合されていたってこと。
[Processing][仕様].pdeはインナークラス、.javaは別クラス
複数のタブを開いて別のクラスを作っても、そのクラスはスケッチ本体クラスのインナークラスとして結合されるのです。別の言い方をすると、スケッチのディレクトリ直下にある「*.pde」ファイルは、全部結合された後、コンパイルされるということです。
なので、Eclipse で複数クラス作るときは、メインの PApplet を拡張したクラスのインスタンスを渡すか、参照用の静的クラスかシングルトンを作った方がいいかも。
Eclipse 自体は、普段 actionscript で flexbuilder を使っていたので、違和感なく使えそう。
しばらく使ってみて調子良さそうだったら subversion なんかも入れてみます。

l00oo.oo00l.com にアップしている parlin particle はパーティクルを perlin ノイズを使って動かしている。
これは最初 processing で作っていて、それを as3 で書き直したしたもの。(といってもやってることはシンプルなのでほとんど同じコードなんだけど。)
せっかくなので processing 版を vimeo にアップしてみた。
こういうのはイイ感じになるまで、ひたすら係数なんかの値を変えて試す。左脳というよりも、わりと右脳寄りな作業かもしれない。