FLASHで外部画像を読込む

落ち着いてもう一度、外部画像を読込むに関して調べたことをメモしていきましょう。

loaderクラスを使います。このクラスはswfや画像のファイルをロードするクラスです。

var myLoader:Loader = new Loader();

まずこんな感じでloaderクラスをオブジェクト化しますね。これで入れ物の準備はできたと思ってください。次に、入れ物の中身のアドレスを指定してやります。URLで指定しないといけないので次のようにURLRequestクラスを使う。

var ImgUrl:URLRequest = new URLRequest("img/1.jpg");

これは引数にアドレスを指定してオブジェクト化することでURLの情報を持たせることができるクラスなんだと思います。

myLoader.load(ImgUrl);

それから上のように、loadメソッドと使って、loaderオブジェクトに指定のURLの情報を読込ませます。

addChild(myLoader);

最後にaddchildでloaderオブジェクトに子オブジェクトを追加させる。このあたりがイメージとしてわかりにくいところです。

var imgInfo:LoaderInfo = myLoader.contentLoaderInfo;
LoaderInfoは、画像の情報を取るためのクラス。

imgInfo.addEventListener(Event.INIT, onInit);
imgInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOerror);

イベントリスナーをつけることで、エラーなんかを検出することができるっぽい。

// ダウンロード完了
private function onInit(e:Event):void {
trace("Can access the loaded object.");
}

// IOエラーによりダウンロード失敗
private function onIOerror(e:IOErrorEvent):void {
trace("IO Error.");
}

どこにロードされるかということだけども、シーンとかシンボルに置かれる。配置などを自由にしたい場合は配置用のシンボルを作ってシンボルのタイムラインにスクリプトを書くと良い。

【画像の大きさを指定する】
var myLoader:Loader = new Loader();
var ImgUrl:URLRequest = new URLRequest("img/1.jpg");

myLoader.load(ImgUrl);
var info:LoaderInfo = myLoader.contentLoaderInfo;
info.addEventListener(Event.COMPLETE, onComp);

function onComp (e:Event):void{
myLoader.width = 100;
myLoader.height = 100;
addChild(myLoader);
}
ポイントは.widthなんかのメソッドで大きさを指定できるんだけど、画像の読み込みが終わってからじゃないとできないということ。読み込みが終わってないのに大きさを変えようとしても画像が表示されない。.COMPLETEで読み込みが終わったことを確認してから表示させるように。