BONKURA BLOG

仕事のメモ帳ブログ。いまのところActionScriptメイン。たまにCSSとかJavaScriptとか。

[AS3.0]rootとstage

たまにrootとstageの概念で混乱してしまうので、基本をメモ。すぐ忘れるるんだよなあ・・・。

たとえばこんなスクリプトを実行したとします。

function test():void{
	trace("test OK");
}
box1.root.test();

すると「メソッドが未定義かも?」とエラーがでます。つまりそんなメソッドが無いってこと。
エラーにならないようにするには、rootプロパティの値をいったんMovieClipタイプかObjectタイプのオブジェクトに変換します。

function test():void{
	trace("test OK");
}
var rootObj:MovieClip = box1.root as MovieClip;
rootObj.test();

また、次の条件のとき、rootはメインのタイムラインとならないので注意が必要。

  1. 表示オブジェクトがStageに直接追加されている→Stageオブジェクト
  2. SWFを読み込んでいる→読み込んだSWFのメインのタイムライン
  3. 読み込んだ外部イメージ(content.root)→Bitmapオブジェクト
  4. ドキュメントクラスを指定している→ドキュメントクラス
  5. 表示リストに追加されていない表示オブジェクト→null


rootが表示オブジェクトが追加されているコンテナを指すプロパティであるのに対し、stageは最上位の表示オブジェクトコンテナであるStageを指すプロパティ。

メインのタイムラインはstageに最初から追加されている表示オブジェクトコンテナ。
stageには表示オブジェクトコンテナを直接追加(addChild)することも可能。

Stageクラスのプロパティやメソッドはインスタンスメンバーであり、Stage.メンバーの式ではアクセス不可。
StageクラスのインスタンスメンバーにアクセスするにはDisplayObjectクラスすなわち表示オブジェクトのstageプロパティを介してアクセスしなければなりません。


Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD-ROM付)
大重美幸
ソーテック社
売り上げランキング: 4326
おすすめ度の平均: 3.5
2 読むのがツライ...
5 助かりました!
3 AS2使いの人に最適な移行書。
5 ベスト!
4 FLASH使いでAS3.0をマスターしたい方には今の所ベストな本です
このエントリーをはてなブックマークに追加 Save This Page to del.icio.us