// Archivo: Particle.as
package {
import flash.display.Sprite;
public class Particle extends Sprite {
private var radius:Number;
private var vx:Number;
private var vy:Number;
private var ax:Number;
private var ay:Number;
public function Particle(radius:Number) {
this.radius = radius;
vx = vy = ax = ay = 0;
graphics.beginFill(0xFF0000);
graphics.drawCircle(0, 0, radius);
graphics.endFill();
}
public function update():void {
vx += ax;
vy += ay;
x += vx;
y += vy;
}
}
}
// Archivo principal FLA
import flash.events.Event;
var particles:Array = [];
var repulsionForce:Number = 0.1;
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
function onEnterFrame(event:Event):void {
for each (var particle:Particle in particles) {
particle.update();
}
}
function onMouseMove(event:MouseEvent):void {
var mouseX:Number = event.stageX;
var mouseY:Number = event.stageY;
for each (var particle:Particle in particles) {
var dx:Number = mouseX - particle.x;
var dy:Number = mouseY - particle.y;
var distance:Number = Math.sqrt(dx * dx + dy * dy);
var force:Number = repulsionForce / (distance * distance);
particle.ax = force * dx;
particle.ay = force * dy;
}
}
// Crea y agrega partículas al array
for (var i:int = 0; i < 100; i++) {
var particle:Particle = new Particle(5);
particle.x = Math.random() * stage.stageWidth;
particle.y = Math.random() *
stage.stageHeight;
particles.push(particle);
addChild(particle);
}