この記事のURL

http://www.dango-itimi.com/blog/archives/2009/000978.html


FLASH tips update SWFAddress を用いたサイト構築 習作2

シーン外部 swf 対応と読み込み中断処理実装や、表示切替処理最適化などを行ないました。今回までの習作は以下の URL から確認できます。

http://www.dango-itimi.com/blog/swf/81/

画面一番右上のボタンが 外部 swf を読み込んで表示するとなっております。

---

以下自分用実装内容メモ

---

【 前置き 】

■表示切替命令

以下説明で用いる「表示切替命令」とは

 http://~/#/index/page/

といったユーザのブラウザからの URL 指定によるswf内の表示変更命令を意味します。また、画面各ボタンが押されても上記 URL 指定による表示切替命令が実行されるような作りになっています。


■処理状態遷移

表示切替命令が行なわれると、現在は次のような処理遷移にしています。

 表示切替命令 → 消去処理 → 表示処理 → 待機処理

消去処理では、現在表示中の消去対象となる各シーンを消去します。
消去方法はライブラリ使用側で実装します。

表示処理では、表示対象となる各シーンを表示します。
表示方法はライブラリ使用側で実装します。
後述する シーン外部 swf 読み込み処理 も表示処理に含まれます。

待機処理では、各シーン内での設定された処理を実行します。
シーン内の画面ボタンが押されたかどうかのチェック等も待機処理で行ないます。

---

【 新規実装内容 】

■シーン外部 swf 対応

http://~/#/index/page/test/~

上記のようなURLに対し 例えば「page 以下を外部 swf にしたい場合」等、任意の箇所のディレクトリを外部 swf で製作できるような処理組み込みを行ないました。

外部 swf のため当然各シーンを表示していく中途の段階で swf 読み込み処理が必要となります。

 index表示 → page表示(page用swf読み込み処理発生) → 読み込み完了後 test表示

今までは、外部 swf が読み込み完了するまでは「表示切替中」とみなされ、どのような表示変更命令も受け付けることはできない作りになっていました。読み込み対象となる外部 swf の容量が大きいとそれだけ待機時間が増えるため、ユーザがシーンをどんどん切り替えることができなくなります。

また個人的な製作の手法として、AS2 までは読み込み中の外部ファイルのストリームを途中で中断することができない(一部環境では可能であった)、という認識があったため、処理に不整合が起きないよう、過去作ったコンテンツでは、読み込みが開始すると読み込みが終了するまで他の外部読み込みはできないよう、待機状態にする、といった作りを行なっていました。

しかし AS3 では外部ファイル読み込みを中途中断するための close メソッドが用意されているので、早速利用してみました。ローカル環境では Flash のバグなのかそういう仕様なのか、Loader.close メソッドが動作しないようなので Web にアップして動作確認する必要があります。

Loader.close に関して大変参考になった記事

 ・APEIROPHOBIA
 Loaderの読み込み強制終了 Loader.close編


■中途表示切替処理実装

上記シーン用外部 swf 読み込み中断処理に加え、表示処理中でも他シーンへの表示切替を可能にすることができるような処理組み込みを行ないました。
これにより、表示処理中のシーン表示が中途半端な状態で他のシーンへ切り替えが発生する場合があるため、ライブラリ使用側はどのような表示状態からでも消去処理が問題なく行なわれるような実装を行なう必要があります。
しかし消去処理中ではいままでと同様に、表示切替命令があっても全ての消去処理が完了するまでは待ち状態となります。

■表示完了後 即待機処理実行へ

表示処理が完了した各シーンは待機状態へと移項し、自分のシーン配下の子シーンが表示処理中であったとしても、待機処理が即実行されるように変更しました。自分のシーンの表示が完了したらすぐさま自シーン内のボタンが押されたかどうかのチェック等を行なうことが可能です。

---
【 未調査項目 】

・外部 swf 以下のシーンを表示するサンプル作成

・待機処理中に何か処理組み込み
 →ゲームを動作させる・外部ファイルを読み込み等

何か処理を組み込むことにより、今まで組み込んだシステムでは不整合が発生する、あるいは穴が見つかる可能性大いにあり。

[ FLASH ] [ tips ] [ update ] 投稿者 siratama : 2009年03月09日 18:32

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/938

コメント

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]