AS3におけるroot

なんとなく、こんなkんじなのかな。。。
rootの概念に関して、メモ。

AS3において、表示リストに追加したとき、親はどこ?
ということで、調べてみた。

var MC:MovieClip = new MovieClip();
MC.graphics.beginFill(0xff0000);
MC.graphics.drawRect(0,0,100,50);
addChild(MC);
trace(MC.root)

このとき出力結果は
「object MainTimeline」です。
MainTimeline>MovieClipオブジェクト(MC) ってことかな???
ちなみにtrace(MC.parent)でも同じ。

var MC:MovieClip = new MovieClip();
MC.graphics.beginFill(0xff0000);
MC.graphics.drawRect(0,0,100,50);
addChild(MC);
trace(MC.parent.parent)

ならば「object Stage」
つまり、Stage>MainTimeline>MovieClipオブジェクト(MC)かな?
StageとMainTimelineは自動的に表示リストに追加?されると考えよう。

ただ、ドキュメントクラスを使うとコレが違うんだ。

public function Test() {
var MC:MovieClip = new MovieClip();
MC.graphics.beginFill(0xff0000);
MC.graphics.drawRect(0,0,100,50);
addChild(MC);
trace(MC.root)
}

を、Test.asとして、任意のflaファイルからドキュメントクラスに入力して、コンパイルすると
「object Test」

trace(MC.parent.parent)ならば「object Stage」となる。
MainTimelineが存在しない。
ということは、ドキュメントクラスはMainTimelinegの代りに、外部のクラスをインスタンス化してくれるものということかな。

※ちなみに、スクリプトは一部はしょってるので、あしからず。

Comments