Привет
вот на вскидку =)

Код:
package
{
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.ui.Mouse;
[SWF(width='500', height='400', backgroundColor='#669999', frameRate='31')]
/*____________________________________________________*/
public class Rotations extends Sprite
{
private var spriteQuantity: Number = 7;
private var spritePlayer: Sprite;
private var widthParabola: Number = 150;
private var heightParabola: Number = 36;
private var positionParabolaSpriteX: Number = 250;
private var positionParabolaSpriteY: Number = 200;
private var reductionScale: Number = 1.4;
private var speedRotations: Number = 40;
private var oneRadian: Number = Math.PI/180;
private var degreeParabola: Number = 0;
private var degreeParabolaOneRadian: Number = degreeParabola*oneRadian;
private var spriteSectorParabola: Number = Math.floor(360/spriteQuantity);
private var workArray: Array = new Array();
private var positionArrayX: Array = new Array();
public function Rotations()
{
drawPlayer();
numX();
}
private function drawPlayer(): void
{
for (var i:int = 0; i < spriteQuantity; i++)
{
spritePlayer = new Sprite;
spritePlayer.graphics.beginFill(0xFFFF00);
spritePlayer.graphics.drawCircle(0, 0, 10);
spritePlayer.graphics.endFill();
spritePlayer.name = "spritePlayer" + i;
addChild(spritePlayer);
workArray.push(i * spriteSectorParabola);
spritePlayer.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
trace(workArray);
}
}
private function numX(): void
{
for (var z:int = 0; z < spriteQuantity; z++)
{
positionArrayX.push(z);
}
trace(positionArrayX);
}
private function enterFrameHandler(event:Event): void
{
if (stage.mouseX < positionParabolaSpriteX)
{
workArray[positionArrayX[parseInt(event.target.name.substr(12))]] += (stage.mouseX - positionParabolaSpriteX) / speedRotations;
}
else if (stage.mouseX > positionParabolaSpriteX)
{
workArray[positionArrayX[parseInt(event.target.name.substr(12))]] -= (positionParabolaSpriteX - stage.mouseX) / speedRotations;
}
var thisParabolaX: Number = new Number;
thisParabolaX = widthParabola * Math.cos(workArray[positionArrayX[parseInt(event.target.name.substr(12))]] * oneRadian);
var thisParabolaY: Number = new Number;
thisParabolaY = heightParabola * Math.sin(workArray[positionArrayX[parseInt(event.target.name.substr(12))]] * oneRadian);
event.target.x = positionParabolaSpriteX + thisParabolaX * Math.cos(degreeParabolaOneRadian) - thisParabolaY * Math.sin(degreeParabolaOneRadian);
event.target.y = positionParabolaSpriteY + thisParabolaX * Math.sin(degreeParabolaOneRadian) + thisParabolaY * Math.cos(degreeParabolaOneRadian);
}
}
}
правда перекрытие по уровням глубин не делал и уменьшение тоже, как не будь после
