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を適切に設定する必要があるので注意しましょう。