忘れすぎてて驚愕

シンボルのフレームに書いたthisは何者かも忘れてしまっている…。

シンボルのフレームにon(click) { trace(this); } を書いてシンボルをattachMovieする。複数インスタンスを作って、作ったムービークリップをクリックすると、インスタンスの数だけtraceが一気に出る。traceの内容は全部違うインスタンス名が出てるのに、なんでワンクリックで全部traceが走るんだ??

関数はstaticで宣言されていると仮定しても、そこからthisが参照できるのはなぜだ。試しにonMouseDownとonMouseUpを書いてドラッグ&ドロップを実装してみるとインスタンス別にドラッグできる。関数そのものはstaticだからどっから呼ばれてもそのインスタンスの関数がリスナーのごとく呼び出される。だけどそこで参照するthisはインスタンス別である。そんな感じだ。

忘れすぎててがっかりしたのでFlashOOP読み直し決定。って、あー。コンストラクタで初期化するかフィールドで初期化するかってアレか。今コレを書いてる途中で思い出した(^_^;

#つまり大きな勘違いをしていて、onMouseXxxはマウスがXxxした時に通知されるもんで、プロトタイプ宣言されているという前に、ムービークリップに対する当たり判定は無いということだ。当たり判定があるのはonXxxの方。