我尝试使用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 )
答案 0 :(得分:0)
我不完全确定,但我认为你错了:
var seekTime:Number = (mouseClickedXPos-100) * (totalTime/(controlBarControls.width-100));
请改为尝试:
var seekTime:Number = ( ( mouseClickedXPos - 100 ) / ( controlBarControls.width - 100 ) ) * totalTime;
基本上,您正在比较两个完全不同的数量以形成比率并乘以鼠标点击位置。相反,将mouseX除以总宽度(给出点击的位置占总宽度的百分比)并将其乘以时间(给出总时间的百分比)。
我对NetStream的工作方式并不太熟悉(我已经习惯了,只是不够广泛地知道这一点),但是如果你通过的时间超过了总时间,那么就必须是一个错误,或者它必须通过不完成命令或将值设置为0来处理它(我个人认为会发生什么。无论如何我都会这样做)