·您当前的位置:首页 > 技术教程 > 播放器教程 >

[AS3]as3写的FLV播放器源代码完整实例

时间:2013-11-21 21:18OKXS.NET
[AS3]as3写的FLV播放器源代码完整实例,一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了onMetaData事件和NET_STATUS事件

一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了onMetaData事件和NET_STATUS事件

  1. import flash.media.*; 
  2. import flash.net.URLStream; 
  3. import flash.net.NetConnection; 
  4. var movieTotalTime:Number=0;//CuPlayer.com提示:总时间 
  5. var proTime:Number=0;//已经播放的时间 
  6. var dx=drag.x; 
  7. var lx=line.x; 
  8. var dw=drag.width; 
  9. var lw=line.width; 
  10. var tempProgress; 
  11. var now=true; 
  12. btn.buttonMode=true; 
  13. line.line_b.scaleX=0;//CuPlayer.com提示:进度条控制 
  14.  
  15. var videoconnection:NetConnection=new NetConnection();//创建一个NetConnection对象. 
  16.  
  17. videoconnection.connect(null); 
  18.  
  19. var videostream:NetStream=new NetStream(videoconnection);//建立一个NetStream对象,连接到NetConnection里面去. 
  20.  
  21. var myvideo:Video =new Video(); 
  22.  
  23. myvideo.attachNetStream(videostream);//Video挂接NetStream,从NetStream那里读内容. 
  24.  
  25. videostream.play("http://www.okxs.net/FLV/1.flv"); 
  26.  
  27. var client:Object=new Object(); 
  28.  
  29. client.onMetaData=onMetaData;//回调函数,获取总的时间   
  30.  
  31. videostream.client=client; 
  32.  
  33. function onMetaData(data:Object):void { 
  34.  
  35.  movieTotalTime=Math.round(data.duration); 
  36. } 
  37.  
  38. //视频播放前缓冲到一定时间后才自动播放, 
  39. videostream.bufferTime=5; 
  40.  
  41. var buffer:Boolean=true; 
  42.  
  43. function onStatus(_evt:NetStatusEvent ):void { 
  44.  trace(_evt.info.code); 
  45.  
  46.  if (_evt.info.code=="NetStream.Play.Start") { 
  47.   addEventListener(Event.ENTER_FRAME ,onEnterFrame); 
  48.  
  49.  } else if (_evt.info.code=="NetStream.Buffer.Empty") { 
  50.   loadmc.visible = true; 
  51.   buffer_txt.visible=true; 
  52.   buffer=true;//这里表示视频正在缓冲 
  53.  
  54.  
  55.  } else if (_evt.info.code=="NetStream.Buffer.Full") { 
  56.   buffer=false; 
  57.   loadmc.visible = false; 
  58.   buffer_txt.visible=false; 
  59.  
  60.  }//CuPlayer.com提示:这里表示视频缓冲区填满了 
  61. } 
  62.  
  63. videostream.addEventListener(NetStatusEvent.NET_STATUS,onStatus); 
  64.  
  65. function onEnterFrame(_evt:Event ) { 
  66.  
  67.  //这里就是显示当前缓冲了多少了 
  68.  bufferbuffer_txt.htmlText=buffer?"正在缓冲:"+Math.floor(videostream.bufferLength/videostream.bufferTime*100)+"%":""; 
  69. } 
  70.  
  71. //CuPlayer.com提示:视频大小和位置的控制 
  72. myvideo.x=-337; 
  73. myvideo.y=-396; 
  74. myvideo.width=483; 
  75. myvideo.height=372; 
  76. addChild(myvideo); 
  77. setChildIndex(myvideo,0); 
  78. btn_mc.visible=false; 
  79.  
  80. btn_an.addEventListener(MouseEvent.MOUSE_DOWN,bt_down); 
  81. btn.addEventListener(MouseEvent.CLICK,bt_down); 
  82.  
  83. line.addEventListener(MouseEvent.MOUSE_DOWN,dragdown); 
  84. line.addEventListener(MouseEvent.MOUSE_UP,dragup); 
  85. function dragdown(e:MouseEvent) { 
  86.  drag.x=mouseX; 
  87.  proTime=(drag.x-dx)/line.width*movieTotalTime;//当前播放的时间 
  88.  videostream.seek(proTime); 
  89. } 
  90. function dragup(e:MouseEvent) { 
  91.  removeEventListener(MouseEvent.MOUSE_DOWN,dragdown); 
  92. } 
  93.  
  94. addEventListener(Event.ENTER_FRAME,dragmove); 
  95.  
  96. function dragmove(e:Event) { 
  97.  if (movieTotalTime!=0) { 
  98.   tempProgress=Math.ceil(videostream.time/movieTotalTime*100)/100; 
  99.  } 
  100.  line.line_b.scaleX=tempProgress; 
  101.  drag.x=Math.round(tempProgress*line.width)+dx-dw; 
  102.  var ld_minutes=Math.ceil(videostream.time); 
  103.  var n_minutes=Math.floor(ld_minutes/60); 
  104.  var p_minutes=Math.floor(ld_minutes%60); 
  105.  //CuPlayer.com提示:秒数转化为时间显示 
  106.  if (p_minutes<10) { 
  107.   if (n_minutes<1) { 
  108.    proTitle.text="00"+":"+"0"+String(ld_minutes); 
  109.   } else { 
  110.    proTitle.text="0"+String(n_minutes)+":"+"0"+String(p_minutes); 
  111.   } 
  112.  
  113.  } else { 
  114.   proTitle.text="0"+String(n_minutes)+":"+String(p_minutes); 
  115.  } 
  116.  var str:String; 
  117.  var my_minutes=Math.floor(movieTotalTime/60);//得到分钟的正整数 
  118.  var my_seconds=Math.floor(movieTotalTime%60);//得到秒钟的正整数 
  119.  if (my_seconds<10) { 
  120.   str="0"+String(my_seconds); 
  121.  } else { 
  122.   str=String(my_seconds); 
  123.  } 
  124.  troTitle.text=String(100+my_minutes).substr(1,2)+":"+str; 
  125.  
  126. } 
  127.  
  128.  
  129. function bt_down(e:MouseEvent):void { 
  130.  now!=now; 
  131.  if (now) { 
  132.   videostream.pause(); 
  133.   btn_mc.visible=true; 
  134.   btn.gotoAndStop(2); 
  135.   now=false; 
  136.  } else { 
  137.   btn_mc.visible=false; 
  138.   videostream.resume(); 
  139.   btn.gotoAndStop(1); 
  140.   now=true; 
  141.  } 
  142.   if (tempProgress>=1) { 
  143.   drag.x=dx; 
  144.   btn_mc.visible=false; 
  145.   videostream.seek(0); 
  146.   videostream.resume(); 
  147.    
  148.  
  149.  } 
  150.  
  151. } 
  152.  
  153. //CuPlayer.com提示:全屏缩放控制 
  154. btn_screen.buttonMode=true; 
  155. btn_screen.addEventListener(MouseEvent.MOUSE_DOWN,fullScreen); 
  156.  
  157. function fullScreen(e:MouseEvent):void { 
  158.  if (stage.displayState==StageDisplayState.NORMAL) { 
  159.   stage.displayState=StageDisplayState.FULL_SCREEN; 
  160.  
  161.  } else if (stage.displayState ==StageDisplayState.FULL_SCREEN) { 
  162.   stage.displayState=StageDisplayState.NORMAL; 
  163.  } 
  164. } 
  165.  
  166. //CuPlayer.com提示:声音控制 
  167. var sound:SoundTransform =new SoundTransform(); 
  168. var volumes:Number=sound.volume; 
  169. videostream.soundTransform=sound; 
  170. btn_sy.gotoAndStop(7); 
  171.  
  172. for (var j:uint=1; j<=7; j++) { 
  173.  var s_btn:MovieClip=btn_sy.an.getChildAt(j-1) as MovieClip; 
  174.  s_btn.addEventListener(MouseEvent.MOUSE_DOWN,set_volume); 
  175.  
  176. } 
  177.  
  178. function set_volume(e:MouseEvent):void { 
  179.  var _mc=e.currentTarget; 
  180.  var k:Number=btn_sy.an.getChildIndex(_mc); 
  181.  btn_sy.gotoAndStop(k+1); 
  182.  sound.volume=(k+1)/7; 
  183.  videostream.soundTransform=sound; 
  184. } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器