0

コンポーネント ライブラリを使用して FLVPlayback コンポーネントを正常に作成し、必要なストリーミング ビデオを再生しています。私の質問は、そのストリームがオンラインでないか見つからない場合、どのようにステージにメッセージを表示して、アクティブなストリームがないことをユーザーに知らせるかです。

更新: これが私のコードです -

thestream.addEventListener(NetStatusEvent.NET_STATUS, onNCStatus);
function onNCStatus(event:NetStatusEvent):void {
    trace(event.info.code)
    switch (event.info.code) {
        case "NetConnection.Connect.Success":
            trace("Success");
            break;
        case "NetStream.Play.StreamNotFound":
            trace("Stream not found");
            break;
    }   
}

出力はまだありません。関数が呼び出されていないようです。ただし、関数の外側 (関数の前) にトレースを配置すると、次のような応答が返されます。

trace(NetStatusEvent.NET_STATUS);

出力:

netStatus

お役に立てれば。

4

3 に答える 3

0

FLVPlayback コンポーネントの STATE_CHANGE イベントを使用し、状態が CONNECTION_ERROR であるかどうかを確認します。また、ビデオの再生が開始されたかどうか、再生が終了したかどうかなども確認できます。

以下のコードは、as3 fla の documentclass として使用できるサンプルです。

package
{
    import flash.display.Sprite;
    import fl.video.FLVPlayback;
    import fl.video.VideoEvent;
    import fl.video.VideoState;
    public class Player extends Sprite
    {
        public var playback:FLVPlayback;

        public function Player()
        {
            playback.addEventListener(VideoEvent.STATE_CHANGE, onStateChange);
        }

        private function onStateChange(ev:VideoEvent):void
        {
            if (ev.state == VideoState.CONNECTION_ERROR)
            {
                trace("could not load video");
            }
        }
    }
}

更新: 上記の更新されたコードを機能させるには、NetStatus イベントを STATE_CHANGE イベントに変更します。

thestream.addEventListener(VideoEvent.STATE_CHANGE, onNCStatus);
   function onNCStatus(event:VideoEvent):void {
       trace(event.info.code)
       switch (event.state) {
           case VideoState.CONNECTION_ERROR:
               trace("Stream not found/Could not connect to stream");
               break;
       }   
   }

FLVPlayBack コンポーネントは、NetStatus イベントを送出しません。

于 2011-03-11T09:49:27.737 に答える
0

コンポーネント インスタンスにリスナーを配置します。

flvPlaybackComponent.addEventListener("netStatus", onNCStatus);

function onNCStatus(event:NetStatusEvent):void {
 trace(event.info.code)
 switch (event.info.code) {
  case "NetConnection.Connect.Success":
      trace("Success");
      break;
  case "NetStream.Play.StreamNotFound":
     trace("Stream not found");
     break;
 }   
}

次に、ステージ上のどこかにビジュアルを配置し、リスナー関数のストリームが見つからない領域内で必要なことを行います。

于 2011-03-10T21:20:54.370 に答える
0

flvPlaybackComponent.addEventListener(*NetStatusEvent.NET_STATUS*, onNCStatus);

コードを見ずに判断するのは困難です。手始めに、機能のためにコードに文字列がないようにすることをお勧めします。そのため、文字列「netStatus」を静的定数変数である NetStatusEvent.NET_STATUS に置き換える必要があります。

于 2011-03-11T09:55:17.933 に答える