forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: flash on 2010-1-13

by Etienne.Verhote forked from forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: flash on 2010-1-13 (diff: 1)
♥0 | Line 60 | Modified 2012-03-13 22:12:50 | MIT License
play

ActionScript3 source code

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

// forked from Tamanegi_kenshi's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: flash on 2010-1-13
package{
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.display.GradientType;
 import flash.geom.Matrix;
 
 
 public class sp extends Sprite{
     private var ball:Sprite;
     private var spring:Number = 0.04;        
    private var vx:Number =0;
     private var gravity:Number = 0;
    private var vy:Number =0;
     private var friction:Number =.95;
     private var speed:int =5;
     
     private var balls:Array;
     
     private var angle:int =0;
     private var radius:int =50;
     
     public function sp(){
         init();
         
         }
     private function init():void{
         
         balls =new Array();
         for(var i:int =0; i<8;i++){
         
         var color:Array =[0x000000,0x000000];
         var alpha :Array =[0.3,1];
         var ration:Array =[0,255];
         var mat:Matrix =new Matrix();
         mat.createGradientBox(30,30,0,-20,-20);
         
          ball = new Sprite();
          ball.graphics.beginGradientFill(GradientType.RADIAL,color,alpha,ration,mat);
           ball.graphics.drawCircle(0,0,20);
           ball.graphics.endFill();
         addChild(ball);
         
         
         balls.push(ball);
         }
         
         addEventListener(Event.ENTER_FRAME,onEnterFrame);
         }
         
     private function onEnterFrame(event:Event):void{
         
       if(balls[0].x>400 || balls[0].x<0){
           speed *=-1;
           }
         
         angle +=10;
         var radi:Number=angle*Math.PI/180;
         
         balls[0].x =200+Math.cos(radi)*100;
         balls[0].y =200+Math.sin(radi)*100;
         
     
         
         
       for(var i:int =0; i<8;i++){ 
       
       
         var dx:Number =(balls[i].x-balls[i+1].x);
         var dy:Number =(balls[i].y-balls[i+1].y);
         var ax:Number =dx*spring;
         var ay:Number =dy*spring;
         vx +=ax;
         vx*=friction+i/100;
         vy+=ay;
         vy *=friction+i/100;
         
         vy +=gravity;
         balls[i+1].x +=vx;
         balls[i+1].y +=vy;
         
         }
         
         
         
         
         }


     }
        
}