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

[AS3]as3.0中视频分切BitmapData.draw使用代码示例

时间:2013-06-01 18:18CuPlayer.com
[AS3]as3.0中视频分切BitmapData.draw使用代码示例

[AS3]as3.0中视频分切BitmapData.draw使用代码示例

  1. package { 
  2. import com.viewtoo.common.view.CommonSprite; 
  3. import flash.events.Event; 
  4. import fl.video.*; 
  5. import flash.display.*; 
  6. import flash.events.*; 
  7. import flash.geom.*; 
  8. /** 
  9. * ... 
  10. * @author Lancelot 
  11. */ 
  12. public class VideoGridView extends Sprite { 
  13.  
  14.    private var flvPlayer:FLVPlayback = null
  15.    private var len:Number = 3
  16.    private var _w:Number; 
  17.    private var _h:Number; 
  18.    // 
  19.    private var runObject:Array = []; 
  20.    public function VideoGridView() { 
  21.     super(); 
  22.    } 
  23.    
  24.    protected override function onAdded(evt:Event):void { 
  25.     super.onAdded(evt); 
  26.     flvPlayer = new FLVPlayback(); 
  27.     flvPlayer.bufferTime = 3
  28.     flvPlayer.load("../mvGame/1.flv"); 
  29.     flvPlayer.autoPlay = true
  30.     flvPlayer.addEventListener(MetadataEvent.METADATA_RECEIVED, onMetaData); 
  31.    } 
  32.  
  33.    private function onMetaData(evt:MetadataEvent):void { 
  34.     flvPlayer.width = evt.info.width; 
  35.     flvPlayer.height = evt.info.height; 
  36.     _w = flvPlayer.width / len; 
  37.     _h = flvPlayer.height / len; 
  38.     flvPlayer.visible = false
  39.     addChild(flvPlayer); 
  40.  
  41.     this.addEventListener(Event.ENTER_FRAME, onVideoEnterFrame); 
  42.     drawVideo(); 
  43.    } 
  44.    
  45.    // 开始照相 
  46.    private function onVideoEnterFrame(evt:Event):void { 
  47.     var l:Number = runObject.length; 
  48.     for (var i:Number = 0; i < l; i++) { 
  49.      var mybmp:BitmapData = runObject[i].mybmpdata; 
  50.      var matrix:Matrix = runObject[i].matrix; 
  51.      var rect:Rectangle = runObject[i].ract; 
  52.      // 绘制9个区域 
  53.      mybmp.draw(flvPlayer, matrix, null, null, rect); 
  54.     } 
  55.    } 
  56.    
  57.    private function onImageMouseDownEvent(evt:MouseEvent):void { 
  58.     var maskView:Sprite = Sprite(evt.currentTarget); 
  59.     maskView.startDrag(false, null); 
  60.     maskView.addEventListener(MouseEvent.MOUSE_UP, onImageMouseUpEvent); 
  61.    } 
  62.    
  63.    private function onImageMouseUpEvent(evt:MouseEvent):void { 
  64.     var maskView:Sprite = Sprite(evt.currentTarget); 
  65.     maskView.removeEventListener(MouseEvent.MOUSE_UP, onImageMouseUpEvent); 
  66.     maskView.stopDrag(); 
  67.         } 
  68.    
  69.    // 快照 
  70.    private function drawVideo():void { 
  71.     for (var x:Number = 0; x < len; x++) { 
  72.      for (var y:Number = 0; y < len; y++) { 
  73.       var obj:Object = new Object(); 
  74.       var rect:Rectangle = new Rectangle(_w * x, _h * y, _w, _h); 
  75.       var matrix:Matrix = new Matrix(1, 0, 0, 1, -rect.x, -rect.y); 
  76.       // 避免误差 
  77.       rect.width += 1; 
  78.       var mybmp:BitmapData = new BitmapData(rect.width, rect.height); 
  79.       mybmp.draw(flvPlayer, matrix, null, null, rect); 
  80.       var sp:Sprite = new Sprite(); 
  81.       sp.x = _w * x; 
  82.       sp.y = _h * y; 
  83.       sp.addEventListener(MouseEvent.MOUSE_DOWN, onImageMouseDownEvent); 
  84.       var bit:Bitmap = new Bitmap(mybmp); 
  85.       sp.addChild(bit); 
  86.       addChild(sp); 
  87.       
  88.       runObject.push( { mybmpdata:mybmp, matrix:matrix, rect:rect } ); 
  89.      } 
  90.     } 
  91.    } 

 

热门文章推荐

请稍候...

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

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