ローディングムービー作成

 ファイルの容量の大きいムービーを作成すると、それを表示させるまでに時間が掛かります。今現在何%読み込まれているのか?などを訪れた方達に教えてあげるおなじみのムービーです。よく使われていますが、なかなか作る事ができない方もいるようです。仕組みは簡単です。理解できたなら、さまざまなローディングムービーを作る事ができます。今回は画像が表示されるまで、今何%読み込まれているかのムービーの作成方法を説明します。


 今回はローディングが完了したら ムービーではなく jpg 画像が表示されるようにします。夏には必ず行く千葉の仁衛門島の画像です。

 わからない場合はここからflaファイルをダウンロードしてください。lesson15のパスを使用しての参照 のページの最初のswfファイルにもNow Loadingを使用しています。

Now Loading 作成 
 
 レイヤーを二つ用意します。レイヤー名はイメージとローディングという名前にします。フレーム数は10にします。
 イメージレイヤーの10フレーム目にキーフレームを挿入し、表示させたい画像を配置します。
 ローディングレイヤーの10フレーム目は表示させた画像を停止指せておく為にキーフレームを挿入してstop();を記述します。

 
 次にバーの部分のムービークリップを作成します。挿入→新規シンボル。画面上に矩形ツールでバーを作成して、右の例のように基準点基準点を左端に持って行きます。それが完了したら作成したバーを選択して、それをシンボルにします。インスタンス名はbarにします。

※ここでの作業は間違えやすいので気を付けて下さい。ムービークリップの中にbarというインスタンス名のムービークリップを作っています。
ローディングバー
 今度は今何%読み込まれているかを表示させる為のダイナミックテキストを配置します。変数名はpercentとします。他はいらないのですが、飾りでNowloading.…と % という静止テキストを配置します。
 一度メインタイムラインに戻って、メインタイムラインのレイヤー名ローディングの5フレームにキーフレームを作成して、今作成したムービークリップを配置します。
 最後に下記のスクリプトをムービークリップ内に記述します。このスクリプトをコピーして使う時によかったらどこでもいいので、FLASHの枝へリンクを貼ってくれたら嬉しいです。
onClipEvent (load) {
_root.stop();
barLength = this.bar._width;
totalSize = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
loadedSize = _root.getBytesLoaded();
nowLoadedSize = Math.round(loadedSize/totalSize*100);
if (nowLoadedSize == 100) {
_root.play();
} else if (nowLoadedSize<100) {
_root.stop();
point = barLength/100;
this.bar._width = point*nowLoadedSize;
this.percent = nowLoadedSize;
}
}
 全ての作業が完了したらCtrl Key(Commando)を押しながら Enter Keyで見てみましょう。ある程度処理速度のあるパソコンならローディングは一瞬かもしれませんので、下記の様に処理速度を落としてシュミレーションしてみてください。
ダウンロードのシュミレート
スクリプトの説明
onClipEvent (load) {
_root.stop();
//メインタイムラインを停止
barLength = this.bar._width;
//barLengthはダイナミックテキストの変数名barの幅とする。(代入)
totalSize = _root.getBytesTotal();
//今現在取得したバイト数をtotalSizaとする。
}
onClipEvent (enterFrame) {
//フレームが再生するたびに
loadedSize = _root.getBytesLoaded();
//ロードされたバイト数をloadedSizeとする。
nowLoadedSize = Math.round(loadedSize/totalSize*100);
//loadedSizeをtotalSizeに100掛けた値で割ったものをnowLoadedSizeとする。
if (nowLoadedSize == 100) {
//もしもnowLoadedSizeが100ならば再生100よりも小さいなら停止
_root.play();
} else if (nowLoadedSize<100) {
_root.stop();
point = barLength/100;
//barLengthを100で割った値をpointとする。
this.bar._width = point*nowLoadedSize;
//barの幅はpoint掛けるnowLoadedSize
this.percent = nowLoadedSize;
//今現在の読み込まれている%をpercentに入れて表示
}
}
MovieClip.getBytesTotal() (ヘルプ引用)

シンタックス 
my_mc
.getBytesTotal() : Number

戻り値
my_mc
の総バイト数を示す整数。(ターゲットまたはレベルにロードされるルート SWF ファイルまたはムービークリップ) の場合、戻り値は SWF ファイルのサイズとなる。

my_mc に指定したムービークリップの総バイト数を返します。

MovieClip.getBytesLoaded()

シンタックス 
my_mc
.getBytesLoaded() : Number

戻り値
ロードされたバイト数を示す整数。

my_mc に指定したムービークリップに対して既にロード (ストリーミング) されたバイト数を返します。この値と、MovieClip.getBytesTotal() から返される値を比較して、ロード済みのムービークリップの割合を判別することができます。