flash on 2010-8-15
♥0 |
Line 65 |
Modified 2010-08-16 13:26:30 |
MIT License
archived:2017-03-20 12:09:51
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();
}
}