FlvPlayBack Component エラー + AS3(解決)
2009年08月20日 22:38
先日のエントリー(FlvPlayBack Component エラー + AS3)で記述した FlvPlayBack Component で存在しない Flv へアクセスした際の Error が Catch 出来なかったことについて、どなたか分かりませんが有難いコメントを頂きまして解決しましたので、メモ。関数の詳細を見落としてたー!!
FlvPlayBack に getVideoPlayer(index:Number) というメソッドがあって、クラス内に FlvPlayBack が 1 つのみある状態(activeVideoPlayerIndex が 0 )なので getVideoPlayer(0) で VideoPlayer オブジェクト を作成し、このオブジェクトの netStream という getter メソッドで NetStream オブジェクトを取得し、後は通常の NetStatusEvent で状態を listen して対応するという事らしいです。今回は存在しない Flv の URL を設定された時対処したかったので、NetStatusEvent の info.code が NetStream.Play.StreamNotFound になる時に対応出来ました。NetStream オブジェクトを通常の様に管理できるので close, seek, resume などのメソッド等も同様に対応できる様。
これで明快ですね!
package
{
import fl.video.FLVPlayback;
import fl.video.VideoPlayer;
import flash.display.MovieClip;
import flash.events.NetStatusEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class TestCompPlayer extends MovieClip
{
private var _compPlayer:FLVPlayback;
private var _txtDebug:TextField;
private var _video:VideoPlayer;
//-----------------------------------------------------------
// construct method
//-----------------------------------------------------------
public function TestCompPlayer()
{
super();
this.init();
}
//-----------------------------------------------------------
// private method
//-----------------------------------------------------------
private function init():void
{
// Objects
this._compPlayer = this["compPlayer"];
this._txtDebug = this["txtDebug"];
this._video = this._compPlayer.getVideoPlayer(0);
// Objects Setting
this._compPlayer.isLive
this._txtDebug.autoSize = TextFieldAutoSize.NONE;
this._txtDebug.wordWrap = true;
this._txtDebug.multiline = true;
this._txtDebug.selectable = false;
this._txtDebug.condenseWhite = true;
// Play
this._compPlayer.source = "http://www.convexstyle.com/no.flv";
// Events
this._video.netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusHandler, false, 0, true);
}
private function onNetStatusHandler(evt:NetStatusEvent):void
{
switch(evt.info.code)
{
case "NetStream.Play.StreamNotFound":
{
trace("Deal with Errors !!!!!");
break;
}
default:
{
break;
}
}
this._txtDebug.appendText(evt.info.code + "¥n");
}
}
}
もやもやが晴れた。
・・・・・
「参考サイト」
FlvPlayBack について
Video Player について
NetStream について
NetStatusEvent について
・・・・・
「お勧め本」
