Ho aggiornato il codice ma sorgono due problemi:
quando l'asse sulle x diventa 0 io ho compiuto solo metà ellisse e in più... non sembra essersi risolto il problema della distanza tra i pallini.
http://dl.dropbox.com/u/4064417/ellisseFlash4.jpg
PS: la funzione la chiamo ad ogni fotogramma dell'animazione come mostra la prima riga di questo codice
Codice PHP:
stage.addEventListener(Event.ENTER_FRAME, quartoCirconferenza);
var angle:Number;
var progress:Number = 0.0;
var velocity:Number = 10;
var pallino:Pallino;
var centerX:int = 200;
var centerY:int = 200;
var radiusX:Number = 150;
var radiusY:Number = 100;
var a:Number = (radiusX > radiusY) ? radiusX : radiusY;
var b:Number = (radiusX < radiusY) ? radiusX : radiusY;
var xTemp:Number = radiusX;
var s:Shape = new Shape();
s.graphics.lineStyle(1, 0x000000);
s.graphics.drawEllipse(centerX - radiusX, centerY - radiusY, radiusX*2, radiusY*2);
addChild(s);
function quartoCirconferenza(e:Event){
if (progress > 1) {
progress -= int(progress);
} else if (progress < 0) {
progress -= int(progress) - 1;
}
/*angle = (1-progress) * (-Math.PI * 2); //circonferenza completa
pallino.x = centerX + radiusX * Math.cos(angle);
pallino.y = centerY + radiusY * Math.sin(angle);*/
pallino = new Pallino();
addChild(pallino);
trace(xTemp+" <= "+Math.sqrt(1)/a);
//if(xTemp <= Math.sqrt(1)/a){
pallino.x = centerX + xTemp;
pallino.y = centerY + b * Math.sqrt(1 - Math.pow(xTemp / a, 2));
//}
xTemp -= velocity;
}