22:13 02.05.2009
stage.addEventListenerでハマった・・・。
現実逃避で、引き続きAS3研究してみる。
えーーーっと。
この●のムービークリップのクラスを作成して、そのコンストラクタにstage.addEventListenerでステージ上のマウスイベントを取得しようとするが、「nullにアクセスするんじゃねーよ!」って怒られる。
なぜか、this.addEventListenerで呼び出した関数内にstage.addEventListenerって書くと大丈夫。なんでかね。
「あ、そっかー、インスタンス作成完了前にstage参照しようとしたからか!?読み込み完了をイベントで取得して、そこのstage.addEventListenerを記述!」って思ったけど、LOADとか言うイベント無いし・・・。
ようやくADDEDっていうイベントを発見して、ADDED完了後にstage.addEventListenerで取得OK!!こんな感じ。
package
{
import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class Circle extends MovieClip
{
public function Circle():void
{
this.addEventListener (Event.ADDED, setEventListener);
}
private function setEventListener(e:Event)
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, function(){ var hoge:Number = 1; } );
stage.addEventListener(MouseEvent.MOUSE_UP, function(){ var hoge:Number = 0; } );
}
}
}
キーーーーー!!このADDEDに気づくまでに2時間ほどかかった・・・、あ、いやもっと。