flash on 2010-8-15

by Tamanegi_kenshi
♥0 | Line 65 | Modified 2010-08-16 13:26:30 | MIT License
play

ActionScript3 source code

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

package {
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class FlashTest extends Sprite {
        
        private var prticles:Array;
        private var numPrticle:uint = 100;
        
        public function FlashTest() {
            init();
        }//FlashTest
        
        private function init():void{
            prticles = new Array();
            for(var i:uint = 0; i < numPrticle; i++){
            //var ballRandom:int = Math.floor(Math.random() * 5);
            var prticle:Ball = new Ball(5, 0xcccccc);
            prticle.x = Math.random() * 465;
            prticle.y = Math.random() * 465
            prticle.mass = 1;
            addChild(prticle);
            prticles.push(prticle);
            
            }
          // prticles[2].mass = 500;
            addEventListener(Event.ENTER_FRAME, onEnter);
        }//init()
        
        private function onEnter(event:Event):void{
         //   prticles[2].x = mouseX;
         //   prticles[2].y = mouseY;
            for(var i:uint = 0; i < numPrticle; i++){
                var prticle:Ball = prticles[i];
                prticle.x += prticle.vx;
                prticle.y += prticle.vy;
           //    if(prticle.x > 465 || prticle.x < 0){
            //       prticle.vx *= -1;
            //   }
            //    if(prticle.y > 465 || prticle.y < 0){
            //       prticle.vy *= -1;
            //   }
 
            

            }
            for(i = 0; i < numPrticle - 1; i++){
                var partA:Ball = prticles[i];
                for(var j:uint = i + 1; j < numPrticle; j++){
                    var partB:Ball = prticles[j];
                    gravitate(partA, partB);
                }
            }    
        }//onEnter
       
        private function gravitate(partA:Ball, partB:Ball):void{
        var dx:Number = partB.x - partA.x;
        var dy:Number = partB.y - partA.y;
        var distSQ:Number = dx * dx + dy * dy;
        var dist:Number = Math.sqrt(distSQ);
        var force:Number = partA.mass * partB.mass / distSQ;
        
        var ax:Number = force * dx / dist;
        var ay:Number = force * dy / dist;
        partA.vx += ax / partA.mass;
        partA.vy += ay / partA.mass;
        partB.vx += ax / partB.mass;
        partB.vy += ay / partB.mass
        }
    }//class
}//package
/*
import flash.display.Sprite;
class Ball extends Sprite{
    public var vx:Number = 0 ;
    public var vy:Number = 0 ;
    public var mass:Number = 1;
    //public var radius:int;
    
    function Ball(){
       // this.radius = radius
        graphics.beginFill(0x000000);
        graphics.drawCircle(0,0,10);
        graphics.endFill();
    }
}*/
import flash.display.Sprite;
class Ball extends Sprite{
    
    public var radius:Number;
    private var color:uint;
    public var vx:Number = 0;
    public var vy:Number = 0;
    public var mass:Number = 1;
    
    public function Ball(radius:Number=40,color:uint=0xcccccc){
        this.radius = radius;
        this.color = color;
        
        graphics.beginFill(color);
        graphics.drawCircle(0,0,radius);
        graphics.endFill();
    }
}