flash on 2016-12-10

by mutantleg
♥0 | Line 104 | Modified 2016-12-10 06:40:11 | 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/MsD8
 */

package {
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
       
       
          // vecVert = new Vector.<xVert>(0,false);
         //  var i:int;
         //  for(i=0;i<8;i+=1) { vecVert.push( new xVert(i*8,32) ); }
            
            setFrame(frame0);
            
           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 frame0:xFrame = new xFrame();
        public var frame1:xFrame = new xFrame();
        
        public function setFrame(f:xFrame):void { vecVert = f.vecVert; }
        
        public var mx:Number = 0;
        public var my:Number = 0;
        public var mbutton:int = 0;
        public var mhold:int = 0;
        public var vecVert:Vector.<xVert>;
        
        public var gt:int = 0;
        
        public function getMag(ax:Number,ay:Number):Number
        { return Math.sqrt(ax*ax+ay*ay); }
        
        public var curSel:xVert = null;
        
        public function getBtn(ax:Number,ay:Number,aw:Number,ah:Number):Boolean
        {
          var over:Boolean;
          over = (mx<ax||mx>=ax+aw||my<ay||my>=ay+ah)==false;
          if (over) { graphics.beginFill(0, 1); }   
          graphics.drawRect(ax,ay,aw,ah);    
          if (over) { graphics.endFill(); }
          return (over && mhold == 1);
        }//getbtn
        
        
        
        public function onEnter(e:Event):void
        {
          graphics.clear();
          graphics.lineStyle(2, 0);  
            
          var b:xVert; var d:Number;  
          mx = stage.mouseX;
          my = stage.mouseY;  
          
          if (getBtn(32,430,32,32))
          { setFrame(vecVert==frame0.vecVert ? frame1:frame0); }
          
          
          if (mbutton > 0) { mhold += 1; }
          else { mhold = 0; curSel = null; }
            
          if (curSel != null)
          { curSel.cx=mx; curSel.cy=my;}
            
          var i:int; var num:int;  
          var a:xVert; var over:Boolean;
          num=vecVert.length;
          for(i=0;i<num;i+=1)
          {
            a = vecVert[i];
            over = getMag(a.cx-mx, a.cy-my)<11;
            if (curSel == null && mhold == 1 && over)
            { curSel = a; }
            
            graphics.drawCircle(a.cx,a.cy,8);  
            if (curSel == a || over)
            {
             graphics.beginFill(0,1);
              graphics.drawCircle(a.cx,a.cy,8);               
             graphics.endFill();    
            }//endif
            
          }//nexti  
          
          
          graphics.lineStyle(2, 0, 0.5);
            
          var t:Number;  
          var f0:xFrame;
          var f1:xFrame;
          var ax:Number; var ay:Number;
         
          t = (gt%25) *0.04;
          f0 = frame0;
          f1 = frame1;
          num=vecVert.length;
          for(i=0;i<num;i+=1)
          {
            a = f0.vecVert[i];
            b = f1.vecVert[i];  
            ax = a.cx + (b.cx-a.cx) * t;
            ay = a.cy + (b.cy-a.cy) * t;              
            graphics.drawCircle(ax,ay,8);  
            
            graphics.moveTo(a.cx,a.cy);
            graphics.lineTo(b.cx, b.cy);
          }//nexti  
            

            gt+=1;            
            
        }//onenter
        
    }//classend
}

internal class xVert
{
  public var cx:Number = 0;  
  public var cy:Number = 0; 
  
  public function xVert(ax:Number=0,ay:Number=0)
  { cx=ax; cy=ay; }
  
}//xvert

internal class xFrame
{
  public var vecVert:Vector.<xVert>;

  public function xFrame()
  {
   vecVert = new Vector.<xVert>(0,false);
   var i:int;
   for(i=0;i<8;i+=1) { vecVert.push( new xVert(Math.random()*100+64,Math.random()*100+64) ); }
  }//ctor    
    
}//xframe