然而,这东西我其实一开始是不懂的,下了人家的纯WMP播放器研究了下,终于了解到了捕获事件的办法: 就是在HTML里插入这么一段JS: <script language="JScript" for="video" event="playStateChange(ns)">video_evtPSChg(ns);</script> 这里的意思就是在播放状态改变事件响应之时,触发video_evtPSChg函数,ns则是表示状态的参数,类型为数字。至于哪个数表示什么,笔者将在后面举例说明一部分,有兴趣的可以继续研究。 此时,在video_evtPSChg函数里头,就可以写: function video_evtPSChg(f){ // 6(缓冲处理中) switch(f){ case 6: player.setVariable("playstatus","正在缓冲,请稍候") break; } } 如果你在Flash里创建了一个变量名为playstatus的动态文本框,那么,在点到播放列表项目,播放器缓冲数据的时候,就会在文本框里显示:“正在缓冲,请稍候”了。于是,就达到了WMP控制Flash的目的了。
播放器其它的功能,都是通过这样的原理实现的。下面将介绍这个演示播放器的制作教程。 1.1 新建一个Flash文档,保存为player.fla,大小为580*390(参考),然后,大家可以参考下面这一
图的布局,把播放器的一些基本元素排出来。
 1.2 视频地址右边的输入文本框,实例名为addressBox,变量名为address。然后,右边的“确定”按钮
可以不定义实例名称。 1.3 地址下方的黑方块,就一个320*240的矩形就可以了,到时候,WMP控件将覆盖在这上面,因此这里
不用太讲究。 1.4 黑方块下面是一个显示播放状态的动态文本框,变量名为playstatus,然后在这下面做上进度条。
这里稍有讲究,先建一个实例名为progressBar的MC,然后,里头的小方块按钮则是一个实例名为ball的 MC,在这MC里头才是按钮。 1.5 下面的四个就是按钮了,可以不定义实例名称。动态文本框的变量名为time。 1.6 最后,右边播放列表下方的动态文本的变量名为listBox。 到此,Flash里基本的布局已经完成,下面就到程序控制了。 笔者的整个程序是从读入播放列表开始的,但是这个读取,分析播放列表,并不是本教程的重点,故只简单提供下代码: 2.2 先在player.fla所在目录下创建一个playList.xml文件,里头加入的内容使用如下格式:
<?xml version="1.0" encoding="GB2312"?><images page="0"><i a="images_abbr/3.jpg" d="超女决赛8进6-谭维维《如果我没有爱过》" id="10025" inList="True" s="mms://nv.sina.com.cn/ent/2006/09/08660827.wmv"/><i a="images_abbr/1.jpg" d="超级女声总决赛8进6-谭维维《离歌》" id="10024" inList="True" s="mms://nv.sina.com.cn/ent/2006/09/08327850.wmv"/><i a="images_abbr/22344543.jpg" d="超女总决赛8进6-厉娜《乐园》" id="10011" inList="True" s="mms://nv.sina.com.cn/ent/2006/09/08991394.wmv"/><i a="images_abbr/2.jpg" d="超女总决赛8进6-尚雯婕《如果没有你》" id="10010" inList="True" s="mms://nv.sina.com.cn/ent/2006/09/08987854.wmv"/></images>
该xml是笔者自己网站读后台之后生成的,有些信息可能与本播放器无关,不过,相信聪明的你们,在后面的xml分析结束后,就可以辨认出来了。
然后,可以加入读取,分析xml的as了: Stage.showMenu=false; Stage.scaleMode="noScale" //上面两句是为了防止缩放影片用的,如果WMP控件放上去了,最好不要让用户可以控制你SWF的缩放。 |