codice:
//The number of bubbles we will have on the stage
const NUMBER_OF_BUBBLES:uint = 60;
//Save the stage width and height
var stageWidth:Number = stage.stageWidth;
var stageHeight:Number = stage.stageHeight;
//This array will contain all the bubbles
var bubbles:Array = new Array();
//This loop creates and positions the bubbles to random locations
for (var i:uint = 0; i < NUMBER_OF_BUBBLES; i++)
{
//Create a new bubble
var bubble:Bubble = new Bubble();
//Assign a random y coordinate (from 0 to 300)
bubble.y = Math.random() * stageHeight;
//Calculate the horizontal distance from the mouse cursor to the center of the stage
var distanceFromCenter:Number = mouseX - stageWidth / 2;
//Calculate the x coordinate (from -400 to 800)
bubble.x = Math.random() * stageWidth - Math.random() * distanceFromCenter * 2;
//Assign a random scale
bubble.scaleX = bubble.scaleY = Math.random() + 0.3;
//Assign a random alpha
bubble.alpha = Math.random() + 0.4;
//Assign a random current angle for the bubble
bubble.currentAngle = Math.random() * Math.PI * 2;
//Assign a random angle speed
bubble.angleSpeed = Math.random() * 0.1;
//Assign a random radius for the bubble
bubble.radius = Math.random() * 5;
//Assign a random y speed
bubble.ySpeed = - Math.random() * 0.5;
//Assign a random y acceleration speed
bubble.acceleration = - Math.random() * 0.2;
//Add the bubble to the bubbles array
bubbles.push(bubble);
//Add the bubble to the stage;
//addChild(bubble);
addChildAt(bubble, 1)
}
//Add ENTER_FRAME listener for animating the bubbles
addEventListener(Event.ENTER_FRAME, moveBubbles);
//This function is called in each frame
function moveBubbles(e:Event):void
{
//Calculate the horizontal distance from the mouse cursor to the center of the stage
var distanceFromCenter:Number = mouseX - stage.stageWidth / 2;
//Calculate a new x speed for the bubbles
var xSpeed:Number = distanceFromCenter / 32;
//Loop through the bubbles array
for (var i:uint = 0; i < bubbles.length; i++)
{
//Save the bubble to a local variable
var bubble:Bubble = (Bubble)(bubbles[i]);
//Update the ySpeed of the bubble (accelerate)
bubble.ySpeed += bubble.acceleration;
//Update the y coorinate
bubble.y += bubble.ySpeed;
//Update the current angle of the bubble
bubble.currentAngle += bubble.angleSpeed;
//Update the x coordinate
bubble.x += Math.sin(bubble.currentAngle) * bubble.radius + xSpeed;
//Check if the bubble is over the top of the stage
if (bubble.y < 0)
{
//Assign a new random x coordinate
bubble.y = stage.stageHeight;//stageHeight;
bubble.x = Math.random() * stage.stageWidth - Math.random() * distanceFromCenter * 2;
//Assign a new random current angle
bubble.currentAngle = Math.random() * Math.PI * 2;
//Assign a new random ySpeed
bubble.ySpeed = - Math.random() * 0.5;
}
}
}