_parent.dragging = true;//按下后,滑块将不跟视频走了,任你在进度条长度范围内拖动 startDrag(this, false, _parent.initx, _parent.inity, _parent.initx+_parent.maxLength, _parent.inity); } on (release, releaseOutside) { fscommand("setvideopercent", (_x-_parent.initx)/_parent.maxLength); stopDrag(); _parent.dragging=false;//释放滑块后,滑块可以跟视频走了 } 生成SWF文件。 8.5 然后,要为setvideopercent这一命令写响应的JS代码: 在JS的fscommand函数中的switch里追加: case "setvideopercent": video.controls.currentPosition=args*video.currentMedia.duration break; 保存HTML,然后测试下,发现进度条可以拖了,并且释放的时候也能定位视频,不过就可能有个Bug,滑块会弹回去原位置一刹那,才跳回你释放的位置 ...... 头痛了大约30秒,发现,在on(release, releaseOutside)事件中设置了dragging以后,fscommand接收到的命令后向Flash传变量这一操作因为时间延迟,还没来得及完成呢!这样的话,笔者只好在JS里确保向Flash传变量这一操作完成才设dragging吧。于是,笔者把这一设置写在了JS里头,把AS的那句
_parent.dragging=false; 去掉,然后把JS改成: case "setvideopercent": video.controls.currentPosition=args*video.currentMedia.duration player.setVariable("progressBar.dragging",false) break; 这么运行,Bug就已经修复了。然而,......,这么一改,本来很工整的代码,就在这里变乱了。唉!代码变乱的根源往往就在于此,笔者无论在制作之前构思多久,把代码结构想得多么完善,总得在这么一些地方作些小修补,然后,代码就变得越来越不工整了。 当然,这也部分归因于fscommand的不完善,因此,在这里,强烈支持火山,把这播放器的ExternalInterface版本做出来! 最后,笔者发现忘了做一个音量控制了,不过,相信大家在看了进度条的制作以后,应该知道如何制作音量控制了。这里,笔者给大家一点提示,设置音量的办法,是改变video.settings.volume的数值。
你想知道居中对齐怎么做?看看我这里,查看源文件,把setPos函数找出来看看 http://hbro.cincn.com/cindex.htm#contents=video
然后,也插入关于播放器的事件响应代码: <script language="JScript" for="video" event="playStateChange(ns)">video_evtPSChg(ns);</script> <script language="JScript" for="video" event="error()">video_evtWmpError();</script> 这里,笔者就只写了两个事件,一个是播放状态改变事件,另一个是播放错误事件。并且,在播放状态改变时,触发video_evtPSChg函数,播放错误时,触发video_evtWmpError函数。当然,你也可以根据需要,按这一格式添加事件。事件的具体名称,可以参考mirycat推荐的: http://blog.guoshuang.com/guoshuangweb/books/wmpsdk.chm
这样,WMP播放器就已经插入到Flash里头了。 具体讨论见:http://bbs.blueidea.com/thread-2677496-1-1.html
|