flex拖动进度条播放视频

love923 2010-11-05 10:48:46
请教各位flex高手一个问题,我做了一个flex播放器,用HSlider控制视频播放。在视频没有加载完成的情况下,也就是进度条拖到哪,就从哪开始播放。下面是我写的代码,在IE7,IE9,谷歌游览器上都可以实现拖动功能。在IE8上面实现不了,拖动进度条到没有加载到的地方进度条就回到起点位置了。各位高手帮忙看看,这个问题怎么解决。先谢谢了。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="top" backgroundColor="white">

<mx:Script>
<![CDATA[
import mx.events.VideoEvent;
private function formatTime(item:Date):String {
return dateFormatter.format(item);
}

private function videoDisplay_playheadUpdate():void {
/* If playhead time is 0, set to 100ms so the DateFormatter doesnt return an empty string. */
var pT:Number = videoDisplay.playheadTime || 0.1;
var tT:Number = videoDisplay.totalTime;

/* Convert playheadTime and totalTime from seconds to milliseconds and create new Date objects. */
var pTimeMS:Date = new Date(pT * 1000);
var tTimeMS:Date = new Date(tT * 1000);

timeLabel.text = formatTime(pTimeMS) + " / " + formatTime(tTimeMS);
}

private function slider_thumbPress():void
{
videoDisplay.removeEventListener( VideoEvent.PLAYHEAD_UPDATE, onPlayingVideoUpdate );
videoDisplay.pause();
}

private function slider_thumbRelease():void
{
videoDisplay.addEventListener( VideoEvent.PLAYHEAD_UPDATE, onPlayingVideoUpdate );
videoDisplay.playheadTime = slider.value;
videoDisplay.play();
}

private function videoDisplay_ready():void
{
videoDisplay.addEventListener( VideoEvent.PLAYHEAD_UPDATE, onPlayingVideoUpdate );
videoDisplay.visible = true;
controlBar.visible = true;
}

private function onPlayingVideoUpdate() :void
{
slider.value = videoDisplay.playheadTime;
}

]]>
</mx:Script>

<!-- Only show minutes and seconds. -->
<mx:DateFormatter id="dateFormatter" formatString="NN:SS" />

<mx:Zoom id="zoom" />

<mx:Panel title="{videoDisplay.source.split('/').pop()} ({videoDisplay.state})">
<mx:VideoDisplay width="520" height="450" id="videoDisplay" visible="false" showEffect="{zoom}"
playheadUpdate="videoDisplay_playheadUpdate()"
ready="videoDisplay_ready()"
rewind="videoDisplay.play()"
source="http://web.qqvideo.tc.qq.com/3/5KjbHbPKnDF.flv" />

<mx:ControlBar id="controlBar" visible="false">
<mx:HSlider id="slider" width="100%"
allowTrackClick="false"
invertThumbDirection="true"
liveDragging="false"
maximum="{videoDisplay.totalTime}"
minimum="0"
thumbPress="slider_thumbPress()"
thumbRelease="slider_thumbRelease()"
tickInterval="1"
value="{videoDisplay.playheadTime}" />
<mx:Label id="timeLabel" textAlign="right" />
</mx:ControlBar>
</mx:Panel>

</mx:Application>

...全文
699 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iristrice 2011-03-20
  • 打赏
  • 举报
回复
你真厉害,原来你做的播放器源码和某著名flex网站上竟然一模一样,难道您就是http://blog.minidx.com/2008/08/06/1227.html网站的版主?膜拜中!
yjq3pori 2010-12-09
  • 打赏
  • 举报
回复
不错,学习一下,但有的时候这个拖动条怎么跑到上面去了?
leemiki 2010-11-05
  • 打赏
  • 举报
回复
就IE8有问题??

Flex是跑在AVM虚拟机上的,理论上纯Flex应用程序应该不存在浏览器兼容问题啊!

先把贴顶了,关注下~~~~
程序园苑 2010-11-05
  • 打赏
  • 举报
回复
问题解决了,也要踩一踩,因为值得我们学习
love923 2010-11-05
  • 打赏
  • 举报
回复
嗯 现在问题解决了 是flash版本问题 升级了下flash就可以了

4,327

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧