第8回 ActionScriptの応用:ローディング | デザインってオモシロイ -MdN Design Interactive-
【サイトリニューアル!】新サイトはこちらMdNについて
イチから始めたい人、リトライしたい人のためのFlashのABC

Lesson5 ActionScript

第8回 ActionScriptの応用:ローディング


Flash Playerは、あるフレームまでムービーの再生が進んだとき、必要なデータがダウンロードされていないと、ダウンロードが追いつくまで再生を中断してしまう。あらゆるユーザーの環境に対応するためには、ダウンロードがすべて終了してからムービーを開始するように、ローディングページを作成する必要がある。プログレスバーが伸びて、ダウンロードの状況が視覚的に確認できるローディングを作成してみよう。

解説:北川貴清
※「FlashのABC」の本文中の解説で使用しているサンプルデータは、別ページでダウンロードができます。

ダウンロード環境のシミュレート


Lesson5第4回の「メソッドを使ったアクション」で作成したサンプルにローディングを設定してみよう。まずは、flaファイルを開き、ムービープレビュー画面でユーザーのダウンロード環境をシミュレートする。

1.[制御]→[ムービープレビュー]を選択する。ムービープレビューウィンドウで[表示]→[ダウンロード設定]を選択し、ダウンロード速度を、56Kbpsに設定する【図1】。

【図1】ダウンロード速度を設定する
【図1】ダウンロード速度を設定する

■Point!
制作するサイトのターゲットによって、ユーザー環境を想定し、一番遅いダウンロード速度を選択するとよい。

2.[表示]→[プロファイラ]を選択して、ダウンロードパフォーマンスのグラフを表示する。プロファイラの左側のプリロードを確認しよう。ここでは、「476fr(15.9s)」と表示されている。これは、ダウンロードが終わるまでに476フレーム分、時間に換算すると15.9秒かかるということを示している【図2】。

【図2】プリロードを確認する
【図2】プリロードを確認する

3.次に、プロファイラ右側のグラフを確認する。グラフのバーの長さはフレームのデータサイズを表している。下の赤い線を越えると、設定した環境ではフレームの再生にダウンロードが追いつかず、そのフレームが読み込まれるまでムービーの再生が止まってしまう【図3】。

【図3】グラフを確認する
【図3】グラフを確認する

4.[表示]→[ダウンロードのシミュレート]を選択して、ダウンロードをシミュレートしよう。赤い線を超えるフレームでムービーが停止し、ダウンロードが完了するまではうまく動作しないことがわかる【図4】。

【図4】ローディングを設定していないので、ダウンロードが完了するまではボタンをクリックしても動作しない
【図4】ローディングを設定していないので、ダウンロードが完了するまではボタンをクリックしても動作しない

ローディングの設定


ダウンロードしたデータのパーセンテージに合わせてプログレスバーが伸びるローディングを作成しよう。


【サンプル1】ローディングが終了したあと、ムービーが開始する

1.「シーン1」のすべてのレイヤーの最初に2フレーム分のフレームを挿入する。「background」レイヤーはキーフレームを[フレーム1]に移動し、「btn」レイヤーの[フレーム1~2]には[フレーム3]と同じボタンシンボルを配置する。プロパティインスペクタで[インスタンスのビヘイビア:グラフィック]、[グラフィックのオプション:シングルフレーム]に変更し、ローディング中はボタン操作ができないようにしておく【図5】。

【図5】[フレーム1~2]にフレームを挿入し、ボタン操作を無効にする
【図5】[フレーム1~2]にフレームを挿入し、ボタン操作を無効にする

2.「loading」レイヤーを作成し、[フレーム1~2]にプログレスバーが100%の範囲となる[W:200]、[H:10]のグレーの四角形を描画したら、中央下に「loading...」の「...」の部分がアニメーションするムービークリップシンボル「loading」を配置する【図6】。

【図6】プログレスバーの枠を描画し、「loading...」のアニメーションを配置する
【図6】プログレスバーの枠を描画し、「loading...」のアニメーションを配置する

3.左上を基準に[W:100]、[H:10]の水色の矩形を描画したムービークリップシンボル「bar」を作成し、四角形の左端に配置する。インスタンス名を「bar_mc」に設定しよう【図7】。

【図7】プログレスバーを配置してインスタンス名を設定する
【図7】プログレスバーを配置してインスタンス名を設定する

4.「action」レイヤーの[フレーム1]を選択し、[アクション]パネルに、ダウンロードしたパーセンテージと、「bar_mc」の幅の比率を設定する【図8】。「getBytesLoaded」はムービークリップを読み込んだバイト数を返すメソッドで、「getBytesTotal」は、ムービークリップのデータサイズを返すメソッドだ。

【図8】プログレスバーの長さを設定するActionScriptを記述
【図8】プログレスバーの長さを設定するActionScriptを記述

(1)
percent = Math.floor( this.getBytesLoaded() / this.getBytesTotal() * 100 );
「this.getBytesLoaded()/this.getBytesTotal()*100」は「読み込んだバイト数÷読み込む全体のバイト数×100」となり、現在読み込まれたデータのパーセンテージを表す。「Math.floor()」は()内の数値の小数点以下を切り捨てるMathオブジェクトのメソッドなので、変数「percent」に、現在読み込まれたデータのパーセンテージの整数部が設定される。

(2)
bar_mc._xscale = percent * 2;
変数「percent」の「0~100%」の変化に合わせて、ムービークリップ「bar_mc」の幅「100px」を、「0~200%」に伸縮させる

5.「action」レイヤーの[フレーム2]にキーフレームを挿入して、[アクション]パネルに、読み込み中ならば[フレーム1]の処理を繰り返し、読み込み終了ならば次のフレームにジャンプして、コンテンツの再生を始める処理を、条件分岐を使って設定する【図9】。これで完成だ。[制御]→[ムービープレビュー]を選択し、[表示]→[ダウンロードのシミュレート]でプログレスバーを確認してみよう。

【図9】読み込み状況によって処理を分岐するActionScriptを記述
【図9】読み込み状況によって処理を分岐するActionScriptを記述

(1)
if ( percent < 100 ) {
this.gotoAndPlay( 1 );
}

変数「percent」の値が「100」より小さい数値(読み込み中)の場合、[フレーム1]に戻って再生する

(2)
else{
this.play();
}

変数「percent」の値が「100」の(読み込みが終了した)場合、次のフレームを再生する


サンプルをダウンロードする


次回につづく
――「FlashのABC」Lesson5は今回で終了です。
Lesson6は10月25日(木)からの掲載予定となります。ご期待ください!


著者写真 [プロフィール]
きたがわ・たかきよ●1972年8月生まれ。三重県出身。三重大学工学部卒業。大阪を拠点としてwebデザインを中心に活動中。著書に『Flash8デザインスクール for Win & Mac 』『ネタ帳ビギナーズ FLASHテンプレート集 』
http://www.f-l-a-v-o-r.com
twitter facebook このエントリーをはてなブックマークに追加 RSS
【サイトリニューアル!】新サイトはこちらMdNについて

この連載のすべての記事

アクセスランキング

8.30-9.5

MdN BOOKS|デザインの本

Pick upコンテンツ

現在