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; } } }