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

[AS3]as3.0封装的Video类

时间:2013-06-01 01:03CuPlayer.com
我们平常播放FLV视频要三个类,笔者感觉这样写比较麻烦。所以我的第一步就是从新封装Video类。让这个类和另外2个类封装到一起。好了这个封装的类放到了一个名为playermedia的文件夹内

我们平常播放FLV视频要三个类,笔者感觉这样写比较麻烦。所以我的第一步就是从新封装Video类。让这个类和另外2个类封装到一起。好了这个封装的类放到了一个名为playermedia的文件夹内,代码如下:

  1. package playermedia{ 
  2. import playermedia.CustomClient; 
  3. import flash.media.SoundTransform; 
  4. import flash.events.IOErrorEvent; 
  5. import flash.events.NetStatusEvent; 
  6. import flash.events.AsyncErrorEvent; 
  7. import flash.net.NetConnection; 
  8. import flash.net.NetStream; 
  9. import flash.media.Video; 
  10. public class Playervideo extends Video { 
  11.    private var netconnection:NetConnection; 
  12.    private var netstream:NetStream; 
  13.    private var video_url:String; 
  14.    private var videosound:SoundTransform; 
  15.    public static var video_time:Number=0
  16.    public function Playervideo():void { 
  17.     CustomClient.setdata(this); 
  18.     netconnection=new NetConnection ; 
  19.     netconnection.connect(null); 
  20.     netstream=new NetStream(netconnection); 
  21.     netstream.client=new CustomClient ; 
  22.     videosound = new SoundTransform(); 
  23.     videosound.volume = 1
  24.     netstream.soundTransform = videosound
  25.     this.attachNetStream(netstream); 
  26.     netstream.checkPolicyFile = true
  27.     netconnection.addEventListener(NetStatusEvent.NET_STATUS,streamnotfound); 
  28.     netconnection.addEventListener(AsyncErrorEvent.ASYNC_ERROR,netmistake); 
  29.     netconnection.addEventListener(IOErrorEvent.IO_ERROR,mistake); 
  30.     netstream.addEventListener(IOErrorEvent.IO_ERROR,mistake); 
  31.     netstream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,netmistake); 
  32.     netstream.addEventListener(NetStatusEvent.NET_STATUS,streamnotfound); 
  33.  
  34.    } 
  35.    private function netmistake(evt:AsyncErrorEvent):void { 
  36.     trace("CuPlayer.com提示:异步错误"); 
  37.    } 
  38.    private function streamnotfound(evt:NetStatusEvent):void { 
  39.     switch (evt.info.code) { 
  40.      case "NetStream.Play.Stop" : 
  41.       CustomClient.stopvideo(); 
  42.       break; 
  43.      case "NetStream.Play.Start" : 
  44.       trace("CuPlayer.com提示:视频开始播放"); 
  45.       
  46.       break; 
  47.      case "NetStream.Buffer.Empty" : 
  48.       trace("数据的接收速度不足以填充缓冲区。"); 
  49.       break; 
  50.      case "NetStream.Buffer.Full" : 
  51.       trace("缓冲区已满并且流将开始播放。"); 
  52.       CustomClient.secplay(); 
  53.       break; 
  54.      case "NetStream.Buffer.Flush" : 
  55.       trace("数据已完成流式处理,剩余的缓冲区将被清空。"); 
  56.       break; 
  57.      case "NetStream.Seek.Notify" : 
  58.       trace("CuPlayer.com提示:搜寻操作完成。"); 
  59.       
  60.       break; 
  61.     } 
  62.    } 
  63.    private function mistake(evt:IOErrorEvent):void { 
  64.     //CuPlayer.com提示:错误处理代码 
  65.     trace("错了!"); 
  66.    } 
  67.    //CuPlayer.com提示:播放视频 
  68.    public function playvideo({ 
  69.     netstream.play(url); 
  70.     video_url = url; 
  71.    } 
  72.    //CuPlayer.com提示:加载条进度百分比 
  73.    public function loadprogress():Number { 
  74.     return netstream.bytesLoaded / netstream.bytesTotal; 
  75.    } 
  76.    //视频的播放时间计算 
  77.    public function playtime():String { 
  78.     var streamminute:Number = Math.floor(netstream.time / 60); 
  79.     var smin_str:String; 
  80.     if (streamminute>=10) { 
  81.      smin_str = String(streamminute); 
  82.     } else { 
  83.      smin_str = "0" + streamminute; 
  84.     } 
  85.     var streamsecond:Number = Math.round(netstream.time % 60); 
  86.     var ssec_str:String; 
  87.     if (streamsecond>=10) { 
  88.      ssec_str = String(streamsecond); 
  89.     } else { 
  90.      ssec_str = "0" + streamsecond; 
  91.     } 
  92.     var newtime:String = smin_str + ":" + ssec_str; 
  93.     return newtime; 
  94.    } 
  95.    //设置视频音量 
  96.    public function setsound(sound_data:Number):void { 
  97.     videosound.volume = sound_data
  98.     netstream.soundTransform = videosound
  99.    } 
  100.    //播放或停止视频 
  101.    public function playstopvideo():void { 
  102.     netstream.togglePause(); 
  103.    } 
  104.    //计算当前播放时间的百分比 
  105.    public function playvideonowtime():Number { 
  106.     return netstream.time / video_time; 
  107.    } 
  108.    //CuPlayer.com提示:跳转视频 
  109.    public function playtimevideo(whereplaytime:Number):void { 
  110.     netstream.seek(whereplaytime); 
  111.     netstream.play(video_url); 
  112.     netstream.togglePause(); 
  113.    } 
  114.    public function playtimemyvideo(timevideo:Number):void{ 
  115.     netstream.seek(timevideo); 
  116.    } 

 

热门文章推荐

请稍候...

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

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