flash on 2012-9-19

by hemingway
♥0 | Line 72 | Modified 2012-10-11 00:45:13 | MIT License
play

ActionScript3 source code

/**
 * Copyright hemingway ( http://wonderfl.net/user/hemingway )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/vCIN
 */

package {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    
    public class maskTest extends Sprite {
        
        internal var spr1:Sprite = new Sprite;
        internal var sprA1:Sprite = new Sprite;
        internal var spr2:Sprite = new Sprite;
        internal var spr3:Sprite = new Sprite;
        
        internal var locX:Number;
        internal var locY:Number;
        
        internal var ptOld:Point = null;
        internal var ptNew:Point = null;
        internal var ptClc:Point = null;
        
        internal var $eObj:Object;
        
        public function maskTest()
        {
            spr1.graphics.beginFill (0x000000, 0.25);
            spr1.graphics.drawRect  (0, 0, 350, 350);
            spr1.graphics.endFill   ();
            
            sprA1.graphics.beginFill (0x000000, 0.25);
            sprA1.graphics.drawRect  (0, 0, 350, 350);
            sprA1.graphics.endFill   ();
            
            spr2.graphics.beginFill (0x000000, 0.25);
            spr2.graphics.drawRect  (0, 0, 200, 200);
            spr2.graphics.endFill   ();

            addChild(spr1);
            addChild(sprA1);
            addChild(spr2);
            addChild(spr3); 
            
            //spr1.blendMode = BlendMode.LAYER;
            //spr3.blendMode = BlendMode.ERASE;
            
            spr3.graphics.beginFill (0x000000, 0.25);
            spr3.graphics.drawRect  (0, 0, 100, 100);
            spr3.graphics.endFill   ();
            
            spr3.mask = spr1;
            spr2.mask = sprA1;
            
            stage.addEventListener(Event.ADDED, addedToStage);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
        }
        
        public function onMouseDown ($e:MouseEvent):void
        {
            ptOld = new Point(mouseX, mouseY);
            
            if ($e.target !== stage)
            {
                $eObj = $e.target;
                
                stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
            }
        }
        
        public function onMouseUp ($e:MouseEvent):void
        {
            stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
            
            $eObj = null;
        }
        
        public function addedToStage ($e:Event):void
        {
            spr1.x += 50;
            spr1.y += 50;
            spr2.x += 250;
            spr2.y += 50;
            spr3.x += 50;
            spr3.y += 250;
        }

        public function onEnterFrame ($e:Event):void
        {
            ptNew = new Point(mouseX, mouseY);
            ptClc = ptNew.subtract(ptOld);
            
            $eObj.x = ($eObj.x + ptClc.x); //subtract registration points
            $eObj.y = ($eObj.y + ptClc.y);    
            
            ptOld = ptNew;
        }
    }
}