用js控制多个Flash的连续播
2010-02-03 10:21 eng308 阅读(569) 评论(0) 编辑 收藏 举报前段时间在做一个网站的时候,客户要求在首页能循环播放几个视频,我因考虑到在首页播放视频会对打开首页的速度有很大影响(视频文件都是上百兆的),所以建议客户将视频转换成SWF格式的flash(一个200M左右的AVI格式视频,转换后才4M),现在问题来了。如何知道一个flash放完了?无法知道它是否播放完毕你又如何能去让其播放下一个flash?后来在网上搜了下,大多数回答是通过在flash的最后一下播放的时候让flash返回一个命令或者将所要播放的多个flash做成一个flash,不过我这里且不说flash是转换过来的,而且那些flash都是客户上传的,客户哪里还会去给你flash再做些处理?无赖之下只能寻求他法,终究皇天不负有心人啦,最终找到了解决问题的办法。他是通过获取flash的帧来判定flash的播放的,当flash播放的时候其工作原理就像是码表一样(当你对flash有些了解的话这种解决方法相信你能很容易想到,无赖我只是一个刚入门小鸟,并且对flash一无所知,如有理解得不当之处欢迎过路高手指教指教)
呵呵。。其他的也不多说了,其实也说不清楚,下面就帖上代码
如果各位大侠有好点的解决方法,还请多多指教.....
具体代码如下:
代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body>
<object id="swf" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name=movie value="http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/1.swf">
</object>
<br />
<script type="text/javascript">
<!--
var flashs=new Array("http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/1.swf","http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/2.swf","http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/3.swf");
var curFlash=0;
var lastTimeFrame;
var flashLen=flashs.length;
function updateMovie(){
var au_sound=document.getElementById("swf");
if(au_sound.PercentLoaded()==100){
var totalFrames=au_sound.TotalFrames;
var curFrame=au_sound.CurrentFrame()+1;
var isPlay=au_sound.IsPlaying();
if(totalFrames==curFrame){
au_sound.movie=flashs[++curFlash%flashLen];
}
document.getElementById("debug").innerHTML="<strong>--播放信息--</strong><br />当前Flash:<input size=14 readonly value="+flashs[curFlash%flashLen]+"><br /> 总帧数:<input size=14 value="+totalFrames+" readonly><br /> 当前帧:<input size=14 readonly value="+curFrame+"><br />播放状态:<input size=14 readonly value="+(isPlay?"播放":"停止")+"><br />";
}else{
document.getElementById("debug").innerHTML="<strong>--播放信息--</strong><br />当前Flash:<input size=14 readonly value="+flashs[curFlash%flashLen]+"><br /> 总帧数:<input size=14 value='Loading Flash' readonly><br /> 当前帧:<input size=14 readonly value='Loading Flash'><br />播放状态:<input size=14 readonly value='Loading Flash'><br />";
}
setTimeout("updateMovie()",100);
}
window.onload=function(){
setTimeout("updateMovie()",100);
}
//-->
</script>
<br /> <br />
<div id="debug"></div>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body>
<object id="swf" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name=movie value="http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/1.swf">
</object>
<br />
<script type="text/javascript">
<!--
var flashs=new Array("http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/1.swf","http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/2.swf","http://www.soojs.com/folder/flash/用js控制多个Flash的连续播放/3.swf");
var curFlash=0;
var lastTimeFrame;
var flashLen=flashs.length;
function updateMovie(){
var au_sound=document.getElementById("swf");
if(au_sound.PercentLoaded()==100){
var totalFrames=au_sound.TotalFrames;
var curFrame=au_sound.CurrentFrame()+1;
var isPlay=au_sound.IsPlaying();
if(totalFrames==curFrame){
au_sound.movie=flashs[++curFlash%flashLen];
}
document.getElementById("debug").innerHTML="<strong>--播放信息--</strong><br />当前Flash:<input size=14 readonly value="+flashs[curFlash%flashLen]+"><br /> 总帧数:<input size=14 value="+totalFrames+" readonly><br /> 当前帧:<input size=14 readonly value="+curFrame+"><br />播放状态:<input size=14 readonly value="+(isPlay?"播放":"停止")+"><br />";
}else{
document.getElementById("debug").innerHTML="<strong>--播放信息--</strong><br />当前Flash:<input size=14 readonly value="+flashs[curFlash%flashLen]+"><br /> 总帧数:<input size=14 value='Loading Flash' readonly><br /> 当前帧:<input size=14 readonly value='Loading Flash'><br />播放状态:<input size=14 readonly value='Loading Flash'><br />";
}
setTimeout("updateMovie()",100);
}
window.onload=function(){
setTimeout("updateMovie()",100);
}
//-->
</script>
<br /> <br />
<div id="debug"></div>
</body>
</html>