サイトトップ

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

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

LoaderInfoクラス

ID: FN0807001 Product: Flash Platform: All Version: CS3/ActionScript 3.0

パッケージ flash.display
クラス public class LoaderInfo
継承 LoaderInfo → EventDispatcher → Object

説明
LoaderInfoクラスは、読込まれるSWFファイルやイメージファイル(JPEGやGIF、PNG形式)についての情報を提供します。LoaderInfoオブジェクトは、すべてのDisplayObjectインスタンスに備わっています。提供される情報には、ロードの進行状況や、ローダーと読込まれるコンテンツそれぞれのURL、メディアの総バイト数やメディアに規定された高さと幅などがあります。

LoaderInfoオブジェクトには、つぎの2つのアクセス方法があります。

  • flash.display.LoaderオブジェクトのcontentLoaderInfoプロパティ ー contentLoaderInfoプロパティは、すべてのLoaderオブジェクトにつねに備わっています。load()またはloadBytes()メソッドを呼出していないLoaderオブジェクトや、読込みが済んでいないLoaderオブジェクトでは、contentLoaderInfoプロパティの多くのプロパティは、アクセスしようとするとエラーをスローします。
  • DisplayObjectインスタンスのloaderInfoプロパティ。

LoaderオブジェクトのcontentLoaderInfoプロパティは、Loaderオブジェクトがロードするコンテンツについての情報を提供します。それ対して、DisplayObjectのloaderInfoプロパティは、そのインスタンスのルートSWFファイルについての情報を提供します[*1]

Loaderオブジェクトに読込まれた(SWFファイルやビットマップなどの)オブジェクトのloaderInfoプロパティは、LoaderオブジェクトのcontentLoaderInfoプロパティと同じLoaderInfoオブジェクトを参照します。つまり、LoaderInfoオブジェクトは、読込まれたオブジェクトファイルとそれをロードしたLoaderオブジェクトの間で共有されるということです。なお、SWFファイルのメインクラスのインスタンスにはそれをロードするLoaderオブジェクトが存在しません。そのため、SWFファイルのメインクラスのインスタンスのLoaderInfoには、loaderInfoプロパティをとおしてのみアクセスすることができます。

つぎの図は、SWFファイルのメインクラスのインスタンスのloaderInfoプロパティと[*2]、LoaderオブジェクトのcontentLoaderInfoプロパティ、そして読込まれたオブジェクトのloaderInfoプロパティそれぞれからの、LoaderInfoオブジェクトの異なった使われ方を示します。

ロードの処理が済まないと、LoaderオブジェクトのcontentLoaderInfoプロパティのプロパティには使えないものがあります。bytesLoadedbytesTotalurlloaderURLapplicationDomainなどのプロパティは取得できます。LoaderInfoオブジェクトからinitイベントが配信されると、LoaderInfoオブジェクトや、読込んだイメージまたはSWFファイルのすべてのプロパティにアクセスできます[*3]

注釈: LoaderInfoオブジェクトのプロパティは、すべて読み取り専用です。

EventDispatcher.dispatchEvent()メソッドをLoaderInfoオブジェクトに適用することはできません。LoaderInfoオブジェクトに対してdispatchEvent()を呼出すと、IllegalOperationErrorの例外がスローされます[*4]

[訳者注*1] Stageインスタンスを頂点とする表示リストの階層に属するDisplayObjectインスタンスは、DisplayObject.loaderInfoプロパティですべて同じLoaderInfoインスタンスを参照します。

// フレームアクション
var _mc:MovieClip = new MovieClip();
addChild(_mc);
trace(root.loaderInfo === _mc.loaderInfo);   // 出力: true

なお、Stageインスタンスの表示リストに加わっていないDisplayObjectインスタンスのDisplayObject.loaderInfoプロパティはnullを返します。

[訳者注*2] 原文には"for the instance of the main class of the SWF file"と書かれているだけで、"loaderInfo property"という記述がありません。したがって、そのまま訳せば単に「SWFファイルのメインクラスのインスタンス」となります。

しかし、この図は「LoaderInfoオブジェクトの異なった使われ方」("the different uses of the LoaderInfo object")を説明しており、他のふたつのDisplayObjectインスタンスについてはLoaderInfoインスタンスを参照するcontentLoaderInfoloaderInfoの各プロパティが採上げられています。したがって、このSWFファイルのメインクラスのインスタンスについても、loaderInfoプロパティが問題とされていると考えるべきでしょう。

[訳者注*3] 原文(前出[訳者注*2]参照)では、オブジェクトについても"loaderInfo"と先頭が小文字で表記されています。しかし、DisplayObject.loaderInfoプロパティのことではなく、DisplayObject.contentLoaderInfoプロパティも参照するLoaderInfoクラスのインスタンスを指していると考えられますので、頭文字は大文字に直しました。

[訳者注*4] LoaderInfoクラスは、EventDispatcherクラスを継承します。しかし、LoaderInfoインスタンスに対してEventDispatcher.dispatchEvent()を呼出すと、つぎのようなエラーが発生します。

Player
ActionScript 3.0/Flash Player 9/AIR1.0以降。

出典
Adobe LiveDocs[ActionScript 3.0 Language and Components Reference] > [LoaderInfo]

参考
Adobe LiveDocs[ActionScript 3.0コンポーネントリファレンスガイド] > [LoaderInfo]


作成者: 野中文雄
作成日: 2008年7月12日


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