0

我尝试NetStream使用动作脚本语言在课堂上执行搜索功能,搜索无法正常工作。我在 NetStream 中阅读了 KeyFrames,KeyFrames 和 seek 之间有什么关系?NetStream 使用 seek 功能还有其他问题吗?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.code是 NetStream.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;

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

我对 NetStream 的工作方式并不太熟悉(我已经使用过它,只是不够广泛地知道这一点),但是如果您传递的时间大于总时间,则必须有一个错误或者它必须通过不完成命令或将值设置为 0 来处理它(我个人认为会发生这种情况。无论如何我都会这样做)

于 2013-04-18T17:06:32.903 回答