NEWS

2016.09.02 「Photoshopとpapervision3dでテクスチャ付3Dを作成する(4)」を更新しました。

  • Web creators

FLASH関連

読み込みが終わってからローディングが表示される場合(2)

概要

Flashの"ローディング(Loading)"機能で0%からカウントされずにしばらく真っ白の状態が続き、表示されたときには既に何%か読み込まれていたりローディングさえ表示されないことがあります。

一つの要因としては"コンポーネント"の利用があり、別記事(読み込みが終わってからローディングが表示される場合(1))にて紹介しています。

もう一つの要因としては、ActionScriptで"attachMovie"を利用している場合です。

"attachMovie"を利用することで、シンボルをステージに配置しなくてもライブラリから呼び出すことができる機能です。
(参照:ActionScript"ライブラリのシンボルを呼び出す")

ここでローディングと"attachMovie"を組み合わせたサンプルを作成します。

ステージに配置

1〜2フレーム目にはローディング処理を入れています。
読み込みパーセンテージ表示させるために"Loades"レイヤーにシンボルを配置しています。

3〜8フレーム目はFlash本編とし、7フレーム目に画像(約300KB)をステージに配置しています。
8フレーム目のステージは何もありませんが、ActionScriptでフレームの進行をstopにしつつ、ライブラリから別の画像(約300KB)を"attachMovie"で動的配置するようにしています。

詳しくは"ローディングの表示"と"ライブラリのシンボルを呼び出す"を参照ください。

ここで、"attachMovie"するライブラリにあるシンボルのプロパティを確認すると「1フレーム目に書き出し」にチェックが入っています。
(バージョンによっては「最初のフレームに書き出し」)

最初のフレームに書き出し

この状態でムービーのプレビューでローディングのテストを行います。

ダウンロードの速度が速いと読み込み度合いの把握がしづらいので、同じく上部メニューの「表示 -> ダウンロードの設定」で「56k(4.7 KB/s)」を選択します。

プレビューが表示されたら、上部メニューの「表示 -> ダウンロードのシミュレート実行」を選択して実行します。
これに関しても詳細は"ローディング機能の確認方法"を参照ください。

通常は1フレーム目にダウンロードのパーセンテージが表示されるようにしていますが、ダウンロードシミュレートが始まって30%程度読み込んでもステージは真っ白で何も表示されません。

その後、読み込み50%手前でステージに配置したシンボル類が表示されます。
しかし、この時点で既に読み込み度合いは48%となっています。

ダウンロードシミュレート

ダウンロードシミュレート

これでは読み込み具合を確認するためにローディングを設置したのに意味が無くなってしまいます。

原因としては、"attachMovie"するシンボルを上述の通り1フレーム目にしているためで、このシンボルのデータを読み込むまでは1フレーム目は動作しません。

では次に、シンボルのプロパティから「1フレーム目に書き出し」のチェックを外します。

プロパティ

同様にダウンロードのシミュレートを実行します。

実行してすぐに1フレーム目が表示されて読み込みパーセンテージもカウントアップされます。

しかし、全ての読み込みが終了して"attachMovie"した最後の8フレーム目に到達しても画像が表示されません。

ダウンロードシミュレータ

ダウンロードシミュレータ

これは本来1フレーム目に書き出そうとしていたところ、チェックを外したのでシンボルを書き出す位置が指定されず、そもそもSWF内に画像が無い状態になっています。

1回目にダウンロードシミュレートした時のグラフと見比べても、データ量が小さいのがわかります。

そこで、"attachMovie"するフレームのステージ外にシンボルを小さく配置します。

ステージに配置

再度ダウンロードのシミュレートを実行すると、ローディングは正常に行われ、"attachMovie"も正常に動作します。

正常動作

データ量のグラフを見ると8フレーム目に配置したシンボル分のデータ量が増えています。

"attachMovie"の数が増えると1フレーム目に集中しがちになるので、1つ"attachMovie"を配置するだけのフレームを作ると管理がしやすくなります。

ページ上部へ