- 2008-11-20 (木) 17:58
- ActionScript | Progression
前回に引き続き、もう少しだけListenコマンドを触ってみる。
コンテンツに入る前にイントロムービーを流したいなどはよくある話だと思います。
メインコンテンツを長々読み込んだあとに、またイントロ用のローディングなんてのはあまりふつくしくないので、Preloaderでメインコンテンツを読み込む前に流してしまおうというテストです。
ムービーが再生終了した後にメインコンテンツを読み込むようにします。
しかしイントロムービーの場合往々にしてスキップボタンも必要になってくることが多いと思います。
そのどちらものイベントでコマンドを抜けるようにすればいいので、ほかのイベントと干渉しないよう新たにイベントクラスを作ってしまうほうが確実で簡単かと思います。
public class PreloadEvent extends Event
{
public static const PRELOAD_COMPLETE:String = "preloadComplete";
public function PreloadEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
public override function clone():Event
{
return new PreloadEvent(type, bubbles, cancelable);
}
public override function toString():String
{
return formatToString("PreloadEvent", "type", "bubbles", "cancelable", "eventPhase");
}
}
と、完了イベントを持つイベントクラスを用意して2つのイベントが起こった際に、preloadCompleteを送出するようにします。
private function _introComplete( e:Event ):void
{
// PreloadEvent.PRELOAD_COMPLETEイベントを送出
dispatchEvent( new PreloadEvent( PreloadEvent.PRELOAD_COMPLETE ) );
}
protected override function _onCastLoadStart():void {
var player:FLVPlayback = FLVPlayback( getChildByName( "introPlayer" ) );
player.addEventListener( VideoEvent.COMPLETE, _introComplete );
skip.addEventListener( MouseEvent.CLICK, _introComplete );
player.play( "intro.flv" );
addCommand(
new Listen( this, PreloadEvent.PRELOAD_COMPLETE, { timeOut: 0 } ),
new Trace( "イントロが終了しました" ),
new RemoveChild( this, player ),
new RemoveChild( this, skip )
);
}
{ timeOut: 0 }は忘れずに。(よく忘れる・・・オデ)
んでテキトーにイントロで使ったものを削除すれば、このあとメインコンテンツのローディングが開始されます。
ムービー再生中にバックグラウンドでメインコンテンツを読み込んだらもっとカコいいけどね。
- Newer: 共有オブジェクトのリンケージクラスを生成するときの対策
- Older: PreloaderとListenコマンド(1)
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.cuegraphix.com/wp-trackback.php?p=25
- Listed below are links to weblogs that reference
- PreloaderとListenコマンド(2) from blog.cuegraphix.com