- 2008-11-17 (月) 20:39
- ActionScript | Progression
PreloaderクラスはProgression2.0ではExPreloaderを継承していたものが、Progression3.0になって新たにCastPreloaderを継承することとなり大きく変わりましたね。
イベントの流れとしては
_onInit (読み込み完了 / ステージの設定など) ↓ _onCastLoadStart (ロードが開始される直前) ↓ ←登録されたCommandListの全てのコマンドの処理が ↓ 完了すれば次へ [メインSWFの読み込み開始] ↓ _onProgress (プログレスバーの表示など) ↓ _onCastLoadComplete ↓ ←登録されたCommandListの全てのコマンドの処理が ↓ 完了すれば次へ [メインSWFをドキュメントの表示リストに追加]
という流れらしい。
なので以前はロードが開始して読み込み終わるまで止めることのできなかったので、本当にローディングの処理しかできなかったけれど、ロード開始直前とロード完了直後のCommandListにより、幅広い表現ができますね。
たとえば、
「このコンテンツには音声が含まれます。ヘッドフォンのボリューム上げてね」みたいなアテンションとか、「HTML版」「Flash版」みたいな振り分けページがFlashページでできる。
早く見たいときに散々メインコンテンツ読み込んでからでないとHTML版の表示ができないのは本当にストレスですからねぇ。。。
そんなとき使えるのがListenコマンド!
Preloaderとか、ページ遷移の前に規約を読ませるみたいなわざわざScene作るのがめんどくさい時くらいしか使い道が思いつかないListenコマンドw
でも使い出すとすごく便利かもしれない。
Listenコマンドはイベントを送出するdispatcherと受け取りたいイベントの種類の名前を渡すことで、そのイベントが起こるまで待機してくれます。
flashButtonとhtmlButtonというインスタンスがあるとして
protected override function _onCastLoadStart():void { htmlButton.addEventListener( MouseEvent.CLICK, function():void { navigateToURL( new URLRequest( "html.html" ) ); } ); addCommand( [ new AddChild( this, flashButton ), new AddChild( this, htmlButton ) ], new Listen( flashButton, MouseEvent.CLICK, { timeOut: 0 } ), new Trace( "Flash版ボタンがクリックされました" ), [ new RemoveChild( this, flashButton ), new RemoveChild( this, htmlButton ) ] ); }
とすれば、Flash版のボタンを押されたときにのみメインコンテンツのロードを行います。
Listenコマンドを使用する際は、第3引数でtimeOutを”0″にしておかないとデフォルト15秒でCommandTimeOutErrorエラーが発生しコマンドリストが終了します。
(ただ終了しても問題なく動くように見えるんですけどね。。。でもエラーが出るのはいやなので設定必須)
次は複数のlistenerを管理する場合のことについて書いてみます。
- Newer: PreloaderとListenコマンド(2)
- Older: SceneObjectのaddSceneFromXMLについてのメモ
Comments:0
Trackbacks:2
- Trackback URL for this entry
- http://blog.cuegraphix.com/wp-trackback.php?p=11
- Listed below are links to weblogs that reference
- PreloaderとListenコマンド(1) from blog.cuegraphix.com
- pingback from blog.cuegraphix.com - PreloaderとListenコマンド(2) 08-11-20 (木) 17:58
-
[...] Older [...]
- pingback from Bookmark::090210 « Kuu2’s Blog 09-02-13 (金) 15:55
-
[...] PreloaderとListenコマンド(1) [...]