NetStream.seek错误正在寻求一个视频

时间:2013-04-16 14:05:26

标签: actionscript-3 flex4 flash-builder netstream

我尝试使用Action Script语言在NetStream类中执行搜索功能,但搜索无法正常工作。我在NetStream中读到了KeyFrames,KeyFrames和seek之间的关系是什么?是否存在使用NetStream的搜索功能的其他问题? onClick()函数Seek;

  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 for net stream的事件

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.code是NetStream.Seek.InvalidTime,视频将停止播放,有时会寻找视频结束,但我跟踪它,ns.time()不会更新为新值(seekTime )

1 个答案:

答案 0 :(得分:0)

我不完全确定,但我认为你错了:

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

请改为尝试:

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

基本上,您正在比较两个完全不同的数量以形成比率并乘以鼠标点击位置。相反,将mouseX除以总宽度(给出点击的位置占总宽度的百分比)并将其乘以时间(给出总时间的百分比)。

我对NetStream的工作方式并不太熟悉(我已经习惯了,只是不够广泛地知道这一点),但是如果你通过的时间超过了总时间,那么就必须是一个错误,或者它必须通过不完成命令或将值设置为0来处理它(我个人认为会发生什么。无论如何我都会这样做)