0

アクション スクリプト言語を使用してクラスでシーク機能を実行しようとしましたがNetStream、シークが正しく機能しません。KeyFrames in NetStream について読みましたが、KeyFrames と seek の関係は何ですか? NetStream によるシーク機能の使用に関する他の問題はありますか? onClick() シークする関数。

  private function onClick(event:MouseEvent):void
    {
         if (event.currentTarget is Group)
         {
             var myGroup:Group = event.currentTarget as Group;
             if ( myGroup.mouseX >= 100)
              {
                 mouseClickedXPos = myGroup.mouseX;
                 ns.inBufferSeek = true;
                 var seekTime:Number = (mouseClickedXPos-100) * (totalTime/(controlBarControls.width-100));
                 ns.seek(seekTime);     
             }  
         }
    }

ネットストリームの netStatus のイベントがあります

ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);

private function onNetStatus(event:NetStatusEvent):void
    {
        if ( event.info == "NetStream.Play.StreamNotFound" )
            legend.text = "Video file passed, not available!";
        else if(event.info.code == "NetStream.Play.FileStructureInvalid")
            legend.text = "Video file passed, FileStructureInvalid";
    }

event.info.codeNetStream.Seek.InvalidTime であり、ビデオの再生が停止し、ビデオの最後をシークする場合がありますが、トレースすると、ns.time()新しい値に更新されません (seekTime)

4

1 に答える 1

0

完全にはわかりませんが、次の行が間違っていると思います。

var seekTime:Number = (mouseClickedXPos-100) * (totalTime/(controlBarControls.width-100));

代わりにこれを試してください:

var seekTime:Number = ( ( mouseClickedXPos - 100 ) / ( controlBarControls.width - 100 ) ) * totalTime;

基本的に、2 つの完全に異なる量を比較して比率を計算し、それをマウスのクリック位置で乗算します。代わりに、その mouseX を合計幅で割り (クリックの位置を合計幅のパーセンテージとして与える)、それを時間で掛けます (合計時間のパーセンテージを与えます)。

私は NetStream の仕組みにあまり精通していません (私はそれを使用しましたが、頭の中でこれを知るのに十分ではありません)、totalTime よりも長い時間を渡すと、エラーが発生する必要があります。または、コマンドを完了しないか、値を 0 に設定することによって、それを処理する必要があります (個人的には、これが起こると思います。いずれにせよ、それは私が行う方法です)。

于 2013-04-18T17:06:32.903 に答える