flash on 2013-7-24

by mutantleg
♥0 | Line 157 | Modified 2013-07-25 18:41:31 | 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/hVB0
 */

package {
    import flash.ui.Keyboard;
    import flash.events.KeyboardEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
     
        public function FlashTest() {
     
             var a:xNode;       
             
             vecNode = new Vector.<xNode>(0, false);
             
             a = new xNode();
             a.d = 0;
             a.cx = 232;
             a.cy = 232;
             a.ca = 0;
             vecNode.push(a);
             
             a = new xNode();
             a.cx = 30;
             a.cy = 0;
             a.ca = 0;
             a.p = vecNode[0];
             a.d = a.p.d + 1;
             vecNode.push(a);
             
             a = new xNode();
             a.cx = 0;
             a.cy = 20;
             a.ca = 0.7;
             a.p = vecNode[1];
             a.d = a.p.d + 1;
             vecNode.push(a);
             
             a = new xNode();
             a.cx = 40;
             a.cy = 0;
             a.ca = 0.3;
             a.p = vecNode[2];
             a.d = a.p.d+1;
             vecNode.push(a);
             
             vecPnt = new Vector.<xPnt>(0, false);
             
             var p:xPnt;
             
             p = new xPnt();
             p.cx = 265+50;
             p.cy = 265+50;
             p.p = vecNode[2];
             vecPnt.push(p);
             
             upNodes();
             
             var i:int;
             var num:int;
             num = vecNode.length;
             
             for (i = 0; i < num; i++)
             {
               a = vecNode[i];
               a.sx = a.tx;
               a.sy = a.ty;
               a.sa = a.ta;   
             }//nexti
             
             
             stage.addEventListener(KeyboardEvent.KEY_DOWN, kdown);
             stage.addEventListener(KeyboardEvent.KEY_UP, kup);
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public var vecKey:Vector.<Boolean> = new Vector.<Boolean>(512, false);
        
        public function kdown(e:KeyboardEvent):void { if (e.keyCode > 511)  {return;} vecKey[e.keyCode]=true;}
        public function kup(e:KeyboardEvent):void { if (e.keyCode > 511) { return; } vecKey[e.keyCode] = false;}
        
        public function upNodes():void
        {
            var i:int;
            var num:int;
            var a:xNode;
            var p:xNode;
            
            num = vecNode.length;
            
              for ( i = 0; i <num ;i++)
            {
                a = vecNode[i];
                
                
                
                if (a.d <= 0) 
                {
                 a.tx = a.cx;
                 a.ty = a.cy;
                 a.ta = a.ca;
                 continue;   
                }
                
                var rx:Number;
                var ry:Number;
                var ra:Number;
                p = a.p;
                
                a.ta = a.ca + p.ta;
                ra = p.ta;
                
                rx = a.cx * Math.cos(ra) - a.cy * Math.sin(ra);
                ry = a.cx * Math.sin(ra) + a.cy * Math.cos(ra);
                
                a.tx = p.tx + rx;
                a.ty = p.ty + ry;
                 
                 
               
                
            }//nexti
        }//upnode
        
        
        
        
        public var vecNode:Vector.<xNode>;
        public var vecPnt:Vector.<xPnt>;
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            var a:xNode;
            var p:xNode;
            var i:int;
            var num:int;
            
            num = vecNode.length;
            
            //vecNode[0].ca += 0.01;
            //vecNode[1].ca += 0.01;
            if (vecKey[Keyboard.UP]) { vecNode[0].ca -= 0.1;}
            if (vecKey[Keyboard.DOWN]) { vecNode[0].ca += 0.1;}
            if (vecKey[Keyboard.LEFT]) { vecNode[1].ca -= 0.1;}
            if (vecKey[Keyboard.RIGHT]) { vecNode[1].ca += 0.1;}
            
            
            
            upNodes();
          
            
            var m:xPnt;
            num = vecPnt.length;
            
            for (i = 0; i < num; i++)
            {
                m = vecPnt[i];
                p = m.p;
                
                graphics.drawRect(m.cx-3,m.cy-3,6,6);
                
                
                var kx:Number;
                var ky:Number;
                var ka:Number;
                
                kx = m.cx - p.sx;
                ky = m.cy - p.sy;
                ka = p.ta - p.sa;
                
                var rx:Number;
                var ry:Number;
                
                rx = kx * Math.cos(ka) - ky * Math.sin(ka) + p.tx;
                ry = kx * Math.sin(ka) + ky * Math.cos(ka) + p.ty;
                
                graphics.drawRect(rx-3, ry-3, 6,6);
                
                
                graphics.drawCircle(p.sx, p.sy, 4);
                
                
            }//nexti
            
            
            
            
            num = vecNode.length;
            
            for ( i = 0; i <num ;i++)
            {
                a = vecNode[i];
                graphics.moveTo(a.tx, a.ty);
                graphics.lineTo(a.tx+Math.cos(a.ta)*8, a.ty+ Math.sin(a.ta)*8);
                
                graphics.drawCircle(a.tx, a.ty, 8);
            }      //nexti
        }//onenter
        
        
    }//classend
}

internal class xPnt
{
  public var cx:Number = 0;
  public var cy:Number = 0;
  public var p:xNode;  
}

internal class xNode
{
    public var cx:Number = 0;
    public var cy:Number = 0;
    public var ca:Number = 0;
    
    public var tx:Number = 0;
    public var ty:Number = 0;
    public var ta:Number = 0;
    
    public var sx:Number = 0;
    public var sy:Number = 0;
    public var sa:Number = 0;
    
    
    public var d:int = 0;
    public var p:xNode = null;
    
}//xnode