Advertisement
henke37

delayed mask

Feb 22nd, 2012
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package  {
  2.    
  3.     import flash.display.*;
  4.     import flash.events.*;
  5.     import flash.geom.Rectangle;
  6.     import flash.geom.Matrix;
  7.    
  8.    
  9.     public class DelayedMask extends MovieClip {
  10.        
  11.         var maskDisplay:Bitmap;
  12.         var maskRenderers:Vector.<BitmapData>;
  13.         var maskRenderIndex:uint;
  14.         const maskRenderCount:uint=2;
  15.        
  16.         public var guy_mc:DisplayObject;
  17.         public var content_mc:DisplayObject;
  18.        
  19.         public function DelayedMask() {
  20.             maskRenderers=new Vector.<BitmapData>();
  21.            
  22.             for(var i:uint=0;i<maskRenderCount;++i) {
  23.                 var maskRenderer:BitmapData=new BitmapData(guy_mc.width,guy_mc.height,true);
  24.                 maskRenderers[i]=maskRenderer;
  25.             }
  26.            
  27.             maskDisplay=new Bitmap();
  28.             addChild(maskDisplay);
  29.            
  30.             //guy_mc.visible=false;
  31.             maskDisplay.mask=guy_mc;
  32.            
  33.             stage.addEventListener(MouseEvent.MOUSE_MOVE,mMove);
  34.             addEventListener(Event.EXIT_FRAME,updateMask);
  35.         }
  36.        
  37.         private function mMove(e:MouseEvent):void {
  38.             guy_mc.x=mouseX;
  39.             guy_mc.y=mouseY;
  40.         }
  41.        
  42.         private function updateMask(e:Event):void {
  43.            
  44.             var maskRenderer:BitmapData=maskRenderers[maskRenderIndex];
  45.            
  46.             maskRenderer.lock();
  47.             maskRenderer.fillRect(new Rectangle(0,0,guy_mc.width,guy_mc.height),0x00FF00FF);
  48.            
  49.             var transform:Matrix=content_mc.transform.matrix;
  50.             var transform2:Matrix=guy_mc.transform.matrix;
  51.             transform2.invert();
  52.             transform.concat(transform2);
  53.            
  54.             maskRenderer.draw(content_mc,transform);
  55.            
  56.             maskRenderer.unlock();
  57.            
  58.            
  59.             maskRenderIndex=(maskRenderIndex+1)%maskRenderCount;
  60.            
  61.             maskDisplay.bitmapData=maskRenderers[maskRenderIndex];
  62.             maskDisplay.x=guy_mc.x;
  63.             maskDisplay.y=guy_mc.y;
  64.         }
  65.     }
  66.    
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement