サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

DisplayObject.rootプロパティ

ID: FN0704001 Product: Flash

Platform: All
Version: Flash 9 and above/ActionScritp 3.0

シンタックス
root:DisplayObject [取得専用]

説明
ロードされたSWFファイルのDisplayObjectについては、rootプロパティは、そのSWFファイルを表示するディスプレイリストのツリー構造における、最上位のDisplayObjectです[*1]。ロードしたイメージファイルを表示するBitmapオブジェクトでは、rootプロパティはそのBitmapオブジェクト自身になります。最初にロードされたSWFファイルのドキュメントクラスのインスタンスでは、rootプロパティはDisplayObjectを継承したそのインスタンス自身となります[*2]。Stageオブジェクトのrootプロパティは、Stageオブジェクト自身です。DisplayObjectのrootプロパティは、そのオブジェクトがディスプレイリストに加わっていなければ、nullが設定されます。ただし、ディスプレイリストにないDisplayObjectContainerに追加されても、そのDisplayObjectContainerが、ロードされたSWFの最上位のDisplayObjectの子である場合は、このかぎりではありません。

たとえば、もし新たなSpriteオブジェクトをSprit()コンストラクタ関数の呼出しにより作成したとき、オブジェクトのrootプロパティはディスプレイリストに加えられるまではnullです(または、ディスプレイリストにはなくても、ロードされたSWFの最上位のDisplayObjectの子であるDisplayObjectContainerに追加されるまで)。

ロードされたSWFファイルでは、そのファイルのロードに用いられたLoaderオブジェクトがディスプレイリストに入っていなくても、SWFファイル内の最上位のDisplayObjectはrootプロパティを自身に設定します。Loaderオブジェクトは、rootプロパティを設定するためのディスプレイリストに子として加えられるまで、rootプロパティが設定されません。

[訳者注*1] タイムラインに予め配置されたインスタンスのrootプロパティは、メインタイムラインを参照します。さらに、メインタイムラインのparentプロパティはStageオブジェクトを参照し、StageもDisplayObjectクラスのサブクラスです。しかし、本文の「最上位(top-most)」には、基本的にはStageオブジェクトを含まないようです(ただし、本文中に説明されているとおり、Stageオブジェクトのrootプロパティは自身を指します)。

[訳者注*2] 原文には、「最初にロードされたSWFファイルのメインクラスのインスタンスでは、rootプロパティはそのDisplayObject自身となります」("For the instance of the main class of the first SWF file loaded, the root property is the display object itself.")と記述されています。しかし、Flashにはメインクラスというものは存在しません。Flex 2のリファレンスと同じ文章ですので、Flash用に書替えるのを見落としたものと考えられます。

実装
public function get root():DisplayObject


つぎのコードは、rootプロパティの違いを、Stageオブジェクトとロードされていない(ディスプレイリストに加える前と後の)DisplayObject(Loaderオブジェクト)、ロードされたオブジェクト(ロードされたBitmapオブジェクト)についてそれぞれ示します。

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;

trace(stage.root);   // [object Stage]

var ldr:Loader = new Loader();
trace(ldr.root);   // null

addChild(ldr);
trace(ldr.root);   // [object ...]

var urlReq:URLRequest = new URLRequest("example.jpg");
ldr.load(urlReq);

ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);

function loaded(event:Event):void {
  trace(ldr.content.root);   // [object Bitmap]
}


Player
ActionScript 3.0/Flash Player 9以降。

出典
[ActionScript 3.0 Language Reference] > [Class DisplayObject] > [root property]


作成者: 野中文雄
作成日: 2007年4月5日


Copyright © 2001-2008 Fumio Nonaka.  All rights reserved.