[转] 开源FLV播放器FX Video中的Bug

阅读: 评论:0

[转] 开源FLV播放器FX Video中的Bug

[转] 开源FLV播放器FX Video中的Bug

[url].php?tid=67663&extra=page%3D2%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D172800[/url]

FX Video是一个开源的基于Flex的flv播放器,不知道有没有人用过,它扩展自Flex中的标准组件VideoDisplay,即支持HTTP,又支持RTMP。最近在做公司的一个项目时用到了,发现它在用RTMP协议播放时,有几个Bug。
1. 还未设置其source属性时,进度条就已经加载了一段。
2. 基于RTMP协议播放时,本来应该是可以随时拖拽进度条的,它却不能。
3. 基于RTMP协议播放时,它不能通过点击进度条上的位置来播放影片的对应时刻。
通过分析其源代码,我找到了相应的解决方案。
1. 修改ls包下的FXProgressSlider类,将其私有属性_progress的默认值改为0.0001(只要是一个很小的数就行了,但不能是0,原值是20)。
2. 修改ls包下的FXSlider类,将其原方法:
private function get boundMax():Number
{
return Math.max(thumb.width/2, bound.width - thumb.width/2) ;
}
改为:
private function get boundMax():Number
{
return Math.max(thumb.width/2, this.unscaledWidth - thumb.width/2) ;
}
改完后,可以拖拽了,但是如果将进度条直接拖拽到最后时,界面会立即卡在拖拽前的那一帧上,很不友好,可以将原方法:
private function onMouseMove(event:MouseEvent):void
{
var ptoint = new Point(event.stageX, event.stageY);
pt = globalToLocal(pt);

thumb.x = Math.min(Math.max(pt.x - xOffset, boundMin), boundMax);

e = new SliderEvent(SliderEvent.THUMB_DRAG);
e.value = value;
dispatchEvent(e);

invalidateDisplayList();
}
改为:
private function onMouseMove(event:MouseEvent):void
{
var ptoint = new Point(event.stageX, event.stageY);
pt = globalToLocal(pt);

thumb.x = Math.min(Math.max(pt.x - xOffset, boundMin), boundMax-0.1); //用boundMax减去一个很小的不等于0的数就行了

e = new SliderEvent(SliderEvent.THUMB_DRAG);
e.value = value;
dispatchEvent(e);

invalidateDisplayList();
}
改完后,把进度条直接拖拽到最后时,影片不会立即停止,还会播放一小会,这一小会有多长就要看你设置的那个很小数的大小了。这样也就解决了影片卡住的问题。

本文发布于:2024-01-31 19:39:48,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670119230893.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:播放器   开源   FLV   Bug   FX
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23