第五章 外部ファイルの読み込み状況を取得する - 1

イベントリスナーで外部ファイルの読み込み状況を監視

第四章で一時的に無効にしていたプリローダーを再度表示させるようにします。まずはガイドに設定していたpreloaderレイヤーを、ガイドを解除して表示されるようにしておきます。

外部ファイルの読み込み状況を取得する方法

前回までのプリローダが機能しない理由

前回と同様に、読み込み済みのバイト数とトータルのバイト数を取得して、読み込み率を計算し、読み込み率の表示と、進捗状況をバーの長さで表示します。

前回は、_root.getBytesLoadedで読み込み済みバイト数、_root.getBytesTotalでトータルバイト数を取得し、読み込み率を計算していました。しかし今回はこの方法は利用できません。

なぜなら_root.getBytesLoadedや_root.getBytesTotalのメソッドで取得できる値は、swfファイルの容量で、外部ファイルの容量は含まれていないからです。

そこで今回のように、外部ファイルを読み込んで表示させるような場合は、イベントリスナーを利用してファイルの読み込み状況を取得して、プリローダーを表示させます。

イベントリスナーとは?

イベントリスナーとはイベントを監視するためのオブジェクトです。今回はMovieClipLoaderクラスのイベントの発生を監視して、イベントの発生にあわせて処理を行います。

イベントリスナーによる監視のながれ

MovieClipLoaderインスタンスによる外部ファイルの読み込み状況を、イベントリスナーで監視するためには下記のようなながれで記述します。

  1. リスナー用オブジェクトを生成
  2. リスナー用オブジェクトにイベントハンドラメソッドを設定
  3. 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);