Hi.
Here is a sample.
AS3 code:
import flash.display.DisplayObjectContainer;
import flash.display.MovieClip;
import flash.events.Event;
const MAX_PARTICLES:uint = 15;
var magnet:Number = 500;
var target:MovieClip;
var forceX:Number = 0;
var forceY:Number = 0;
var forceDivider:Number = 4;
function main():void
{
spawnMultiple(MAX_PARTICLES, Bat);
setParticles();
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
function spawnMultiple(total:uint, ParticleClass:*):void
{
var i:int;
for (i = total - 1; i > -1; i--)
spawnParticle(particlesContainer, ParticleClass);
}
function spawnParticle(container:DisplayObjectContainer, ParticleClass:*):void
{
var particle = new ParticleClass();
particle.x = randomRange(particle.width * 0.5, stage.stageWidth - particle.width * 0.5);
particle.y = randomRange(particle.height * 0.5, stage.stageHeight - particle.height * 0.5);
container.addChild(particle);
}
function setParticles():void
{
var i:int;
for (i = particlesContainer.numChildren - 1; i > -1; i--)
{
var child:MovieClip = particlesContainer.getChildAt(i) as MovieClip;
child.initialX = child.x;
child.initialY = child.y;
child.gotoAndPlay(uint(randomRange(1, child.totalFrames - 1)));
}
}
function enterFrameHandler(e:Event):void
{
var i:int;
for (i = particlesContainer.numChildren - 1; i > -1; i--)
{
var target:MovieClip = particlesContainer.getChildAt(i) as MovieClip;
var distanceX:Number = particlesContainer.mouseX - target.x;
var distanceY:Number = particlesContainer.mouseY - target.y;
var distance:Number = Math.sqrt((distanceX * distanceX) + (distanceY * distanceY));
var powerX:Number = target.x - (distanceX / distance) * magnet / distance;
var powerY:Number = target.y - (distanceY / distance) * magnet / distance;
forceX = (forceX + (target.initialX - target.x) * 0.5) / forceDivider;
forceY = (forceY + (target.initialY - target.y) * 0.5) / forceDivider;
target.x = powerX + forceX;
target.y = powerY + forceY;
}
}
function randomRange(min:Number, max:Number):Number
{
return min + Math.random() * (max - min);
}
main();
Download / FLA / SWF:
https://bit.ly/3EfPy1z
I hope it helps.
Regards,
JC