Flash作成で気をつけるべきポイント[ローディング編]

コンテンツのダウンロード状況をユーザに通知するローディング表示について。


SWFの読み込みのチェックは、
MovieClipのプロパティ _framesloaded と _totalframes を用いた
タイムラインが何フレーム目まで読み込めたのかをチェックして
ロード状況を算出するタイプと、
MovieClipやMovieClipLoaderのメソッド、 getBytesLoaded() と getBytesTotal() を用いた
容量でのチェックタイプで、全容量中どれだけの容量読み込めたのかをチェックしてロード状況を算出する方法などである。
(例はActionscript2.0までの場合)

ローディングのスタイルとして、
単体のSWFコンテンツで、自分で自分のロードをチェックする場合と、
親SWF、子SWFなど2つ以上の構成で、SWFがSWFを読み込む場合などがある。

自分で自分のロードをチェックするというのは、
SWFがストリーミング再生ができる形式ということで
タイムラインがすべて読み込み終わらなくても再生を開始することができる。
この特性から、タイムラインの頭のほうに
ローディングスクリプトをつけてチェックするというもの。

しかしこの方法が向かない場合もある。
コンテンツの容量が大きい場合や、ActionScript Classを使用している場合、
リンケージの設定でActionscriptに書き出し/最初のフレームに書き出しの設定がされている場合だ。

通常ステージへの配置が1回も無いシンボルはパブリッシュ時にSWFへ書き出しが行われないのだが
これらの設定がなされている場合は、書き出しが行われる。
最初のフレームに書き出しは、タイムラインよりも頭の領域に書き出されるため
コンテンツが表示されるまえの容量が大きくなる可能性がある。

またActionScript Classは、
パブリッシュの設定> Flash (タブ)> 設定
のクラス用のフレームの書き出しにあるように、
標準ですべてのClassが1フレーム目に書き出されるという点だ。
Classファイルはテキストだが1フレーム目に配置される容量としては無視できないものだ。

書き出しフレーム値を変えるのも手だがそのフレームまでClassが使用できなくなるため
リンケージ設定したシンボルへの影響も考えなくてはならなくなる。
※変更した場合で、僕的にはあまりうまくいったためしがないです;

以上のことからすぐにローディングが表示されず、真っ白な画面のまま待たされる、
といったことが起こってしまう可能性があるのです。

結局のところ、SWFがSWFを読み込むスタイルがオススメですということ。
その際に気をつけるポイントとして
最初のSWF(親SWF)の容量は限りなく軽くすることです。
僕は30kb~100kb以下くらいに抑えようと努力してますが、
演出としてのローディングを求められる場合も多く難しい場合もあります。
その場合は、ローディングのローディング orz ということも検討する必要があるかもです。

と、話してきましたが、
ユーザビリティとして、どんな環境からのアクセスにもサイトに訪れたユーザに
いち早くローディングの表示を行いたいという思いまでにでした。

なので、対象とするクライアント環境が定められる場合などはケースバイケースだと思います。
以下、通信速度のロード時間例です。参考までに。(まちがってるかも?)

wikipedia:デバイス帯域幅の一覧

■低速回線 (値は理論値)

56kモデム 5.6 kB/s
>1MB DL : 2.9分
>100KB DL : 18秒

ISID 8 kB/s
>1MB DL : 2分
>100KB DL : 12.5秒

■高速回線 ADSLなど

1M 128 kB/s
>1MB DL : 7.8秒

8M 1000 kB/s
>1MB DL : 1秒

16M 2000 kB/s
>1MB DL : 0.5秒

32M 4000 kB/s
>1MB DL : 0.25秒

以上。
間違いや、他のイイアイデアなどありましたらコメントをいただけると助かります。


Related Post
>>ロリポップのドメインは選べる全85種類!!

はてなにブックマーク  Yahooにブックマーク  users Livedoorにブックマーク  バザールにブックマーク  del.icio.usにブックマーク   価格比較のその価格OK?

コメントをどうぞ