イベントリスナーで外部ファイルの読み込み状況を監視
第四章で一時的に無効にしていたプリローダーを再度表示させるようにします。まずはガイドに設定していたpreloaderレイヤーを、ガイドを解除して表示されるようにしておきます。
外部ファイルの読み込み状況を取得する方法
前回までのプリローダが機能しない理由
前回と同様に、読み込み済みのバイト数とトータルのバイト数を取得して、読み込み率を計算し、読み込み率の表示と、進捗状況をバーの長さで表示します。
前回は、_root.getBytesLoadedで読み込み済みバイト数、_root.getBytesTotalでトータルバイト数を取得し、読み込み率を計算していました。しかし今回はこの方法は利用できません。
なぜなら_root.getBytesLoadedや_root.getBytesTotalのメソッドで取得できる値は、swfファイルの容量で、外部ファイルの容量は含まれていないからです。
そこで今回のように、外部ファイルを読み込んで表示させるような場合は、イベントリスナーを利用してファイルの読み込み状況を取得して、プリローダーを表示させます。
イベントリスナーとは?
イベントリスナーとはイベントを監視するためのオブジェクトです。今回はMovieClipLoaderクラスのイベントの発生を監視して、イベントの発生にあわせて処理を行います。
イベントリスナーによる監視のながれ
MovieClipLoaderインスタンスによる外部ファイルの読み込み状況を、イベントリスナーで監視するためには下記のようなながれで記述します。
- リスナー用オブジェクトを生成
- リスナー用オブジェクトにイベントハンドラメソッドを設定
- MovieClipLoaderインスタンスにリスナーオブジェクトを設定
1.リスナー用のオブジェクトの生成
まずは下記の一行でリスナー用のオブジェクトを生成します。
var Lo:Object = new Object()
Loはインスタンス名です。
2.リスナー用オブジェクトにイベントハンドラメソッドを設定
つぎにリスナー用オブジェクトにMovieClipLoaderクラスのイベントハンドラを設定します。MovieClipLoaderクラスで外部ファイルを読み込む場合、次のようなイベントが発生します。
MovieClipLoaderクラスのイベント
| onLoadStart | 読み込み開始時 |
|---|---|
| onLoadProgress | 読み込み進行中(読み込むファイルのデータがローカルディスクに書き込まれる度に発生) |
| onLoadComplete | 読み込み完了時 |
| onLoadError | 読み込み失敗時 |
たとえばonLoadStartのイベント発生に合わせて処理を行いたい場合は、次のように記述します。
Lo.onLoadStart = function(_mc:MovieClip):Void {
処理;
}
※(_mc:MovieClip)については後ほど解説します。
3.MovieClipLoaderインスタンスにリスナーオブジェクトを設定
イベントハンドラをセットしたら、次の一行でMovieClipLoaderインスタンスにリスナー用オブジェクトをわりあてます。
Ml.addListener(Lo);