代码改变世界

用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 />&nbsp;&nbsp;总帧数:<input size=14 value="+totalFrames+" readonly><br />&nbsp;&nbsp;当前帧:<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 />&nbsp;&nbsp;总帧数:<input size=14 value='Loading Flash' readonly><br />&nbsp;&nbsp;当前帧:<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 />&nbsp;<br />
    
<div id="debug"></div>
</body>
</html>