·您当前的位置:主页 > 技术教程 > AS2与AS3技术 >

[AS3]as3调用视频文件播放的一个简单播放器源代码

时间:2017-07-14 18:06酷播
第一步:创建播放按钮、暂停按钮,实例名分别为play_btn、pause_btn;第二步:画两个长矩形,分别转为影片>剪辑,实例名分别为jzjd_mc、bfjd_mc,作为加载进度条与播放进度条

[步骤]
第一步:创建播放按钮、暂停按钮,实例名分别为play_btn、pause_btn;
第二步:画两个长矩形,分别转为影片>剪辑,实例名分别为jzjd_mc、bfjd_mc,作为加载进度条与播放进度条;
第三步:在库中右键选择“新建视频”,在弹出的对话框中点选“视频(受ActionScript控制)”,拖到场景中,实例名为vid;
第四步:在场景中拉两个动态文本,实例名分别为bftxt(显示播放时间)、zcdtxt(显示总时间);
第五步:画一个长矩形,转为影片剪辑,作为音量条,实例名为ylt_mc;
第六步:画一个小圆,转为影片剪辑,作为音量滑块,实例名为ylhk_mc;
第七步:在帧上写如下代码:
[代码]

  1. //创建一个 NetConnection 对象 
  2. var nc:NetConnection=new NetConnection(); 
  3. /*如果连接到没有使用服务器的FLV 文件,则通过向 connect() 方法传递值 
  4. null,来播放流式 FLV 文件*/ 
  5. nc.connect(null); 
  6. /*创建一个 NetStream 对象(该对象将 NetConnection 对象作为参数)并 
  7. 指定要加载的 FLV 文件*/ 
  8. var ns:NetStream=new NetStream(nc); 
  9. ns.play("http://www.helpexamples.com/Flash/video/cuepoints.flv"); 
  10. /*使用 Video 类的 attachNetStream() 方法附加以前创建的 NetStream 
  11. 对象(视频实例名为vid)*/ 
  12. vid.attachNetStream(ns); 
  13. //音量初始值 
  14. var yl:Number=0.5; 
  15. var nsyl:SoundTransform =new SoundTransform(); 
  16. //nsyl.volume=yl 
  17. //播放进度与加载进度影片缩放为0 
  18. bfjd_mc.scaleX=jzjd_mc.scaleX=0
  19. //申明变量播放与下载百分比以及总时间(秒)的初始值为0 
  20. var bfbfb:int=0
  21. var xzbfb:int=0
  22. var _duration:Number=0
  23. //指定在其上调用回调方法的对象 
  24. var _client:Object=new Object(); 
  25. _client.onMetaData=onMetaData; 
  26. ns.client=_client
  27. //按钮可见性与添加侦听事件 
  28. play_btn.visible=false
  29. pause_btn.visible=true
  30. pause_btn.addEventListener(MouseEvent.CLICK, zt); 
  31. play_btn.addEventListener(MouseEvent.CLICK, bf); 
  32. //忽略错误 
  33. ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
  34. function asyncErrorHandler(event:AsyncErrorEvent):void { 
  35. //暂停 
  36. function zt(event:MouseEvent):void { 
  37. play_btn.visible=true
  38. pause_btn.visible=false
  39. //视频暂停 
  40. ns.pause(); 
  41. //播放 
  42. function bf(event:MouseEvent):void { 
  43. play_btn.visible=false
  44. pause_btn.visible=true
  45. //恢复回放暂停的视频流 
  46. ns.resume(); 
  47. addEventListener(Event.ENTER_FRAME,gx); 
  48. //接收在正播放的 FLV 文件中嵌入的描述性信息时调度 
  49. function onMetaData(data:Object):void { 
  50. _duration=data.duration; 
  51. //申明变量播放信号 
  52. var bfxh:String; 
  53. //侦听视频流的开始和末尾 
  54. ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); 
  55. function statusHandler(event:NetStatusEvent):void { 
  56. bfxh=event.info.code; 
  57. //不断更新进度与文本的显示 
  58. addEventListener(Event.ENTER_FRAME,gx); 
  59. function gx(event:Event):void { 
  60. if (ns.bytesLoaded>0) { 
  61. //加载进度 
  62. xzbfb=ns.bytesLoaded/ns.bytesTotal*100; 
  63. jzjd_mc.scaleX=xzbfb/100; 
  64. if (_duration>0 && ns.time>0) { 
  65. //播放进度 
  66. bfbfb=ns.time/_duration*100; 
  67. bfjd_mc.scaleX=bfbfb/100; 
  68. if (bfxh=="NetStream.Play.Stop") { 
  69. //播放完毕时的设置 
  70. bfbfb=0
  71. bfjd_mc.scaleX=0
  72. ns.pause(); 
  73. ns.seek(0);//将播放头置于视频开始处 
  74. play_btn.visible=true
  75. pause_btn.visible=false
  76. //文本显示内容 
  77. bftxt.text=Math.round(ns.time/60)+":"+Math.round(ns.time%60); 
  78. zcdtxt.text=Math.round(_duration/60)+":"+Math.round(_duration%60); 
  79. //音量控制 
  80. yl=(ylhk_mc.x-345)/50; 
  81. ylylt_mc.scaleX=yl; 
  82. nsyl.volume =yl; 
  83. ns.soundTransform =nsyl
  84. //音量滑块拖动控制 
  85. var fw:Rectangle=new Rectangle(345,328,50,0);//拖动范围 
  86. ylhk_mc.addEventListener(MouseEvent.MOUSE_DOWN,ylhkax); 
  87. ylhk_mc.addEventListener(MouseEvent.MOUSE_UP,ylhksk); 
  88. stage.addEventListener(MouseEvent.MOUSE_UP,ylhksk); 
  89. function ylhkax(event:MouseEvent):void { 
  90. ylhk_mc.startDrag(false,fw); 
  91. function ylhksk(event:MouseEvent):void { 
  92. ylhk_mc.stopDrag(); 

 来源:http://hao4752.blog.163.com/blog/static/1130561662010815103459483/

保利威视云直播提供稳定流畅,高画质,低延迟的直播服务

酷播云服务,酷播云