• ベストアンサー

ローディング画面で100フレーム使って読み込み状況を表示させたいです

FLASH8を使っています。 最初のローディング画面を 100フレームのムビークリップで状況を表示させて 全て読み込ませてから再生を開始する様に設定したいのですが スクリプトの記述がわかりません。 どなたかアドバイスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

内部が100フレームあるムービークリップを ムービー(_root) のロード済みバイト数の%に応じて gotoAndStop() させる方法 ですよね? そのローディング画面ムービークリップを 他のムービーでも使い回したりすることを考えると, スクリプトはムービークリップ内に書いた方が便利(持ち運びが簡単)のような気がしますので, ローディング画面ムービークリップ内の フレーム1 に書く場合のスクリプト例です↓。 ◎シンプルバージョン -------------------------------------------------- // _root階層のタイムラインの再生を停止 _root.stop(); // 変数 total に_root階層の全バイト数を取得 var total:Number = _root.getBytesTotal(); // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function():Void { // 変数 loaded に_root階層のロード済みバイト数を取得 var loaded:Number = _root.getBytesLoaded(); // 変数 percent に小数切り上げロード済み%を取得 var percent:Number = Math.ceil(loaded/total*100); // このタイムラインを percent フレームに進めて停止 this.gotoAndStop(percent); // もしロードバイトが全バイト数に達すれば if (loaded>=total) { // _root階層のタイムラインの再生を開始 _root.play(); // この onEnterFrame を削除 delete this.onEnterFrame; } }; -------------------------------------------------- 上のスクリプトでは, 回線が早い場合,またはローカルの場合, ロードが一瞬で済んでしまってローディング画面ムービークリップが見えません。 それはそれで良いわけですが, もし回線が早い人にもローディング画面ムービークリップを見せたい場合は, 次のように重石(というかリミッター)を入れます。 ◎回線が早い場合の重石入りバージョン -------------------------------------------------- // _root階層のタイムラインの再生を停止 _root.stop(); // 変数 total に_root階層の全バイト数を取得 var total:Number = _root.getBytesTotal(); // 変数 weight の初期化 var weight:Number = 0; // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function():Void { // 変数 loaded に_root階層のロード済みバイト数を取得 var loaded:Number = _root.getBytesLoaded(); // 変数 percent に小数切り上げロード済み%を取得 var percent:Number = Math.ceil(loaded/total*100); // 変数 weight に 2 を加算(2でも3でも5でも10でも適当に) weight += 2; // percent と weight を比べて小さい方のフレームに進めて停止 this.gotoAndStop(Math.min(percent,weight)); // ロードバイトが全バイト数に達し weight が 101以上になれば if (loaded>=total && weight>=101) { // _root階層のタイムラインの再生を開始 _root.play(); // この onEnterFrame を削除 delete this.onEnterFrame; } }; -------------------------------------------------- ※ 作成可能環境 Flash MX 2004 以上(Flash 8 も含む)   ActionScript 2.0 あとは, [制御]→[ムービープレビュー]で出てくるプレビュー窓で, [表示]→[ダウンロードのシミュレート]にチェックを入れて動作確認することができます。 --- 補足 --- --- --- ローディング画面ムービークリップの中身は, なるべく凝らずに容量を軽く軽く作ることが大きなポイントです。 仮にローディング画面ムービークリップが,ムービー全体の20%の容量を占めてしまった場合, ローディング画面ムービークリップが表示されるときにはすでに20%ロード済みであるということになります。 つまりこの場合, しばらく真っ白画面でその後ローデング画面は フレーム20 からスタートになってしまいます。 あと,メインムービー(_root)の フレーム1 には, ローディング画面ムービークリップ以外はほとんど何も置かないようにすることもポイントです。 理由は上で書いたことと同じです。 フレーム1 が重いと フレーム1 が表示されるまでに時間がかかってしまいます。 ローディング画面も含めて,とにかく フレーム1 は軽くすることが肝腎です。 各フレームの容量は, [制御]→[ムービープレビュー]で出てくるプレビュー窓で, [表示]→[プロファイラ]にチェック 同じく[フレーム毎データ量]にチェック で確認することができます。 または, [ファイル]→[パブリッシュ設定]→[Flash]タブを選択 [サイズレポートの作成] にチェックを入れて [パブリッシュ] すると, レポートがテキストでパブリッシュされますから,これで確認することもできます。

tiito
質問者

お礼

ご丁寧にありがとうございます。 教えてくださったスクリプトで上手くいき、とても助かりました!

すると、全ての回答が全文表示されます。

関連するQ&A