D0502124 全容量読み込み用ローディングの作り方
Name 光の天使
Date 2005年02月12日 (土) 13時24分
Message 最近FLSHを使ったアニメを製作してますけれども、一番最初にローディング画面を入れたいです。
それも、最初から最後まで、全部のローディングが終わったら再生を始めるというような感じのを入れたいのですが、どうか詳しいやり方教えてください・・・お願いします。
Home or Link http://hfm-kenchan.com/cgi/flash_qa.cgi
Response 01
2005年02月14日 (月) 17時44分> 憲ちゃん 
お久しぶりです、光の天使さん♪

ローディングの作成方法もいろいろですが・・・
読込済み進行状況をローディングバーと%表示するひとつの例として、



例えば「NowLoading」という名前のムービークリップの中に、図のように・・・
横長の長方形の塗り図形をムービークリップにしたものを配置、インスタンス名を「bar」としたもの
及びダイナミックテキスト、変数名「parcent」というものを配置します。

バーの長さは、原型を100%とする横幅のプロパティ「_xscale」を使って「0%⇒100%」にします。

アクションレイヤーの1フレームのフレームアクション、

 bar._xscale = parcent = 0;←初期値としてbarの横幅及び変数parcentの値を「0」に設定
 total = _parent.getBytesTotal();←変数totalにひとつ上の階層(通常_root)の全byte数を代入

2フレームのフレームアクション

 loaded = _parent.getBytesLoaded();←変数loadedに現在の読込済みbyte数を代入
 if (loaded >= total) { 読込済みByte数が全byte数以上になれば(読込完了)
   _parent.play();←ひとつ上の階層のタイムラインを進める
 } else { そうでないなら
   bar._xscale = loaded/total*100;←%を計算して、それを「bar」の横幅に代入(反映)
   parcent = Math.round(bar._xscale);←その値を四捨五入して変数parcentに代入(表示)
   _parent.stop();←ひとつ上の階層のタイムラインは停止したままにしておく
 }

3フレームのフレームアクション

 this.gotoAndPlay(2);←2フレームに戻って、2〜3フレームのループを繰り返す

以上です。このサンプルです。loading_sample0.fla
そしてこのムービークリップを図右のように、シーンの1フレームに配置、
シーン、1フレームのアクションに「this.stop();」を記載しておきます。
当然、本番のコンテンツはすべて2フレーム以降に配置・編集することになります。

ただし、この方法は個人の趣味で使われるならご自由ですが、
広く世間に内容を見てもらうことが目的のHPでは、すべて読み込まないと正常に動作しない場合など、
余程の理由がない限り使用することは避けてください!!
Flashは、全データを読み込まないと再生できないアニメGIFなどと異なり、
「ストリーミング再生」といって、1フレームづつデータを読み込んで表示していきます。
したがってswf全体の容量がいくら大きくても上手くフレームに分散することで、
それほど待ち時間なしで再生されます。それをこのような方法でローディングを用いることは、
Flashの利点を殺しアニメGIF並みにすることと同じです(笑)
ビジターとしては、見たくもないローディングをいつまでも見せられて、迷惑なことです(笑)

ローディングは本来、回線速度が今ほど速くないときのやむをえない方法であったのですが、
Flashをはじめられて間もない方はローディングが格好いいと思われて、これまでもここのBBSで
数多くの方がご質問されておられますがそのたびに上記のような説明をさせていただいてます(-.-汗
あるいはローディングコンテンツそのものが重過ぎて、ローディングのロードディングは?
などという珍問もありました(^^;
百聞は一見にしかずで…以下に悪い例をお示しし、もうそろそろ…
このサイトでの「NowLoading」の説明は打ち切りにさせていただきたいなぁと思っています(;^_^A



※B&B等高速回線で調子の良いときならそれほどでもという感じですが、
回線環境によってかなりの差があると思います。

同じビデオですが、過去記事の■MCに読み込んだswfの音量調節バーと比較してみてください。
こちらは最初から「ストリーミング再生」で、ローディングらしきものはただのアニメーションです♪
デザインとして”ローディングのようなもの”をみせるときはアニメで作成されるのも良いと思います。
あるいは、単に「NowLoading」の文字が点滅するだけのムービークリップをシーンの1フレームに配置、
2フレーム以降に本番のコンテンツを置くようにするだけでも効果があります。

また、特定のフレームまで読み込んでおかないと、途中で操作されると誤作動するような場合は、
そのフレーム番号を上記1フレームのスクリプトで、変数totalに代入し、
2フレームの変数loadedの部分で・・・

 loaded = _parent._framesloaded

と書き換えてください。
Response 02
2005年02月14日 (月) 22時36分> 光の天使 
バレンタインいかがでお過ごしですか^^*
早速のレスありがとうございます。大変ちからになりました^^*
それでは、見ながら練習してみます♪マタわからないときはよろしくお願いします^^
http://hfm-kenchan.com/cgi/flash_qa.cgi

このページの先頭へ