1

基本的に、これを要約してみます。recvStream.play("randomstring"); の潜在的なランダム文字列がたくさんあります。

次に、イベントリスナーを実行する関数を 5 秒ごとにチェックするタイマーがあります。

recvStream.addEventListener(NetStatusEvent.NET_STATUS,
    netConnectionHandler);

次に、switchステートメントで考えて、それを使用して、それがアクティブなストリームであるかどうかを確認するか、アクティブにする必要がある別のストリームを検索するか、タイマーを停止して再生できるようにします。

    // i was thinking this would verify it's playing and then that's it
         case "NetStream.Play.Start" :
            trace("ITS PLAYING YOU SHOULD SEE SOMETHING");
            timer.stop();
                        break;

         // i was thinking i could use this to see if the string is nothing then the timer would run again
         case "NetStream.Buffer.Empty" :
            trace("THE BUFFER IS EMPTY KEEP LOOKING");
                        //code to look again
            break;

//I also tried NetStream.Play.StreamNotFound instead of NetStream.Buffer.Empty didn't work either

しかし、実際にはそのようには機能しません。NetStream.Buffer.Empty の代わりに使用すべきものはありますか? それとも一緒に何か他のもの?

Flash CS5 で Actionscript 3 を使用しており、Cirrus RTMFP http://labs.adobe.com/technologies/cirrus/を使用しています。

4

1 に答える 1

0

ストリームのステータスを伝えるためにリスナーが接続されている場合、タイマーでストリームをチェックする理由がわかりません。

recvStream.addEventListener(NetStatusEvent.NET_STATUS,
    netStatusHandler);

// some code

private function netStatusHandler (ev:NetStatusEvent) : void {

    if (ev.info.level == "error") {
        trace ("Something went wrong. Try again!");
        // call restart method here
        return;
    }

    switch (ev.info.code) {
        case "NetStream.Play.Start" :
            trace("IT'S PLAYING YOU SHOULD SEE SOMETHING");
            break;

        case "NetStream.Buffer.Empty" :
            trace("THE BUFFER IS NOW EMPTY.");
            break;

        // ... any other netstatus events you want to react upon.
    }
}

明らかに、呼び出す前にランダム文字列の正確性を検証することも検討する必要があります。recvStream.play()これは、意図的に NetStream を失敗させ、ネットワークに負担をかけないよりもクリーンです。

于 2011-01-27T08:00:54.023 に答える