URLLoaderクラスとはリファレンスにあるとおり外部リソースをロードするために使用します。
URLLoader クラスは、指定した URL からテキスト、バイナリデータ、または URL エンコード形式の変数をダウンロードする際に使用します。動的なデータ駆動アプリケーションで使用するテキストファイル、XML、その他の情報をダウンロードする場合に便利です。 ActionScript 3.0 言語およびコンポーネントリファレンス
URLLoaderインスタンスのloadメソッドでロードしたデータは、データのロードと見なされるため、外部リソースのドメインと元となるswfのドメインが異なる場合にはポリシーファイルの設定に注意しましょう。
ロードするデータ形式の指定
URLLoaderインスタンスにはdataFormatというプロパティがあります。
dataFormat : String = "text" ダウンロードしたデータがテキスト(URLLoaderDataFormat.TEXT)生のバイナリデータ(URLLoaderDataFormat.BINARY)、または URL エンコードされた変数(URLLoaderDataFormat.VARIABLES)のいずれであるかを制御します。 ActionScript 3.0 言語およびコンポーネントリファレンス
つまり、downloadされた値をどういった形式で扱うのかを指定するプロパティです。
サンプルコード
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLVariables; import flash.utils.ByteArray; /** * URLLoaderでバイナリデータを取得する例 * @author naoto koshikawa */ public class URLLoaderSample extends Sprite { //---------------------------------------------------------------------- // methods //---------------------------------------------------------------------- //------------------------------ // public methods //------------------------------ /** * constructor */ public function URLLoaderSample() { var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, urlLoader_completeHandler); urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.load(new URLRequest("http://asmple.com/work/avatar1.swf")); } private function urlLoader_completeHandler(event:Event):void { var urlLoader:URLLoader = URLLoader(event.target); switch (urlLoader.dataFormat) { case URLLoaderDataFormat.TEXT: { var str:String = urlLoader.data as String; // strを使った処理 break; } case URLLoaderDataFormat.BINARY: { var byte:ByteArray = urlLoader.data as ByteArray; var loader:Loader = new Loader(); loader.loadBytes(byte); addChild(loader); // などloaderを使った処理 break; } case URLLoaderDataFormat.VARIABLES: { var variables:URLVariables = urlLoader.data as URLVariables; // variablesを使った処理 break; } } } } }
以上のように、URLLoader.dataの値を各オブジェクトへ変換することが出来ます。 このようにURLLoaderを用いて取得した値を扱う場合、適切なdataFormatを設定しておく必要があります。dataFormatで指定した値と実際受け取った値の形式が異なる場合、以下の処理で例外が発生します。
var str:String = urlLoader.data as String;
var byte:ByteArray = urlLoader.data as ByteArray;
var variables:URLVariables = urlLoader.data as URLVariables;
downloadされた値を扱う場合には、URLLoader.dataFormatを適切に設定する必要があるので注意しましょう。