flash on 2015-4-16

by mutantleg
♥0 | Line 105 | Modified 2015-04-16 04:29:44 | MIT License
play

ActionScript3 source code

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

package {
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
           
           vecAct = new Vector.<xAct>(0,false);
           var i:int; var a:xAct;
           for (i=0;i<32;i++)
           {
             a =new xAct(); vecAct.push(a);
             a.cx = Math.random()*460;
             a.cy = Math.random()*460;   
           }
           
           
           stage.addEventListener(MouseEvent.MOUSE_DOWN, onMdown);
           stage.addEventListener(MouseEvent.MOUSE_UP, onMup);
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public function onMdown(e:MouseEvent):void { mbutton = 1; }
        public function onMup(e:MouseEvent):void { mbutton = 0; }
        
        public var mbutton:int = 0;
        
        public var mode:int = 0;
        public var wx:Number = 0;
        public var wy:Number = 0;
        
        
        public function onEnter(e:Event):void
        {
            
            
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            
            var mx:Number; var my:Number;
            mx = stage.mouseX; my = stage.mouseY;

            drawAct(vecAct);

            
            
            if (mbutton > 0)
            if (mode == 0)
            {
              mode = 1; wx = mx; wy = my;   
            }

             var ax:Number;  var ay:Number;
             var bx:Number; var by:Number;
               
                ax = mx < wx ? mx :wx;
                ay = my < wy ? my :wy;
                bx = mx > wx ? mx :wx;
                by = my > wy ? my :wy;

            
            if (mbutton > 0)
            if (mode == 1)
            {
                
                graphics.drawRect(ax,ay, bx-ax,by-ay);
                drawOverAct(vecAct, ax,ay,bx,by);
            }
            
            if (mode == 0)
            { drawOverAct(vecAct,mx-8,my-8,mx+8,my+8); }

            if (mbutton <= 0) if (mode > 0)
             { mode = 0; setOverAct(vecAct, ax,ay,bx,by); } 
            
            var ms:Number;ms=8;
            graphics.moveTo(mx,my-ms); graphics.lineTo(mx,my+ms);
            graphics.moveTo(mx-ms,my); graphics.lineTo(mx+ms,my);
        }//onenter

        public var vecAct:Vector.<xAct> = new Vector.<xAct>(0,false);

        public function drawAct(vec:Vector.<xAct>):void
        {
            var i:int; var num:int; var a:xAct;
            num=vec.length;
            for(i=0;i<num;i++)
            { 
              a = vec[i]; 
                graphics.drawCircle(a.cx,a.cy, a.rad);
              if (a.mode > 0) {   graphics.drawRect(a.cx-8,a.cy-8, 16,16); }  
            }
        }//drawact
        
        public function drawOverAct(vec:Vector.<xAct>, ax:Number,ay:Number,bx:Number,by:Number):void
        {
            var i:int; var num:int; var a:xAct;
            num=vec.length;
            for(i=0;i<num;i++)
            { 
              a = vec[i];     
                if (a.cx+a.rad < ax) { continue; }
                if (a.cy+a.rad < ay) { continue; }
                if (a.cx-a.rad > bx) { continue; }
                if (a.cy-a.rad > by) { continue; }
            graphics.drawRect(a.cx-10,a.cy-10, 20,20);
            }
        }//drawact
        
        public function setOverAct(vec:Vector.<xAct>, ax:Number,ay:Number,bx:Number,by:Number):void
        {
            var i:int; var num:int; var a:xAct;
            num=vec.length;
            for(i=0;i<num;i++)
            { 
              a = vec[i]; a.mode = 0;     
                if (a.cx+a.rad < ax) { continue; }
                if (a.cy+a.rad < ay) { continue; }
                if (a.cx-a.rad > bx) { continue; }
                if (a.cy-a.rad > by) { continue; }
              a.mode = 1;  
            }
        }//drawact

        
    }//classend
}

internal class xAct
{
    public var cx:Number = 0;
    public var cy:Number = 0;
    public var rad:Number = 4;
    
    public var mode:int = 0;
    
}//xrect