flash on 2016-3-25

by mutantleg
♥0 | Line 68 | Modified 2016-03-25 05:54:43 | 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/GDmX
 */

package {

    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
           
           vecNode = new Vector.<xNode>(0, false);
          
          
           var a:xNode; var prev:xNode;
           a = new xNode(); a.cx = 230; a.cy = 230; vecNode.push(a);
           a.ang = 1.57;
           a.rad=32;
           body = a;
           
           a = new xNode(); a.wx=0; a.wy=-50; vecNode.push(a);
           a.parent = body; arm = a;
           a.wang = -1.57;
           prev = a;
           
           a = new xNode(); a.wx=40; a.wy=20; vecNode.push(a);
           a.parent = prev;  
           
           

         stage.addEventListener(Event.ENTER_FRAME, onEnter);   
        }//ctor
        
        public var gt:int = 0;
 
         public var body:xNode;
         public var arm:xNode;
        
        public function onEnter(e:Event):void
        {
          graphics.clear();
          graphics.lineStyle(2, 0);
           
           body.ang = 1.57 + Math.sin(gt*0.05)*0.5;
           arm.wang = Math.sin((gt*0.05)+1.57)-1.57;
           
              var a:xNode; var i:int; var num:int;
              num = vecNode.length;
              for (i = 0; i < num; i += 1)
              {
                a = vecNode[i];
                
                if (a.parent != null)
                { 
                  setPos(a, a.wx, a.wy, a.parent.cx, a.parent.cy, a.parent.ang);
                  a.ang = a.parent.ang + a.wang;
                }//endif
                
                graphics.drawCircle(a.cx, a.cy, a.rad);// 8);
                graphics.moveTo(a.cx, a.cy);
                graphics.lineTo(a.cx + Math.cos(a.ang) * 8, a.cy + Math.sin(a.ang) * 8);
              }//nexti

            gt+=1;
        }//onenter
        
        
          public var vecNode:Vector.<xNode>;

        
        public function setPos(a:xNode, ax:Number, ay:Number, tx:Number,ty:Number,  ta:Number):void
        {
          var ux:Number; var uy:Number;
          var vx:Number; var vy:Number;
          var nx:Number; var ny:Number;
          nx = Math.cos(ta); ny = Math.sin(ta);
          
          ux = nx*ax; uy = ny*ax;
          vx = -ny*ay; vy = nx*ay;
          a.cx = tx + ux + vx; a.cy = ty + uy + vy; 
              
        }//setpos
        
    
    }//classend
}

internal class xNode
{
  public var rad:Number = 12;
  
  public var cx:Number = 0;
  public var cy:Number = 0;
  public var ang:Number = 0;
  public var parent:xNode = null;

  public var wx:Number = 0;
  public var wy:Number = 0;
  public var wang:Number = 0;
  
}//xnode