class Marble extends MovieClip { // properties that need to be stored public var nRadius:Number; public var nSpeed:Number; public var nDegree:Number; public var nScale:Number; public var mcBall:MovieClip; public var timeInterval:Number; public function init() { nDegree = 0; nRadius = 45; nSpeed = 1; nScale = 110; //trace("degree: " + nDegree + " radius: " + nRadius + " speed: " + nSpeed); mcBall = attachMovie("Ball", "Marb", 1); onEnterFrame = vDropBall; timeInterval = setInterval(this, "vSpin", 1000); } private function vDropBall() { nScale = nScale - .5; nRadius = nRadius + .9; nSpeed = nSpeed + .05; var temp = calculatePos(); _x = temp.x; _y = temp.y; _xscale = nScale; _yscale = nScale; //trace("scale: " + arg.nScale + " degree: " + arg.nDegree + " radius: " + arg.nRadius + " speed: " + arg.nSpeed); if (nScale <= 10) {deleteGraphic();} } public function calculatePos():Object { nDegree = (nDegree+nSpeed)%360; var tempx = (Math.cos((nDegree/180)*Math.PI))*nRadius + 250; var tempy = (Math.sin((nDegree/180)*Math.PI))*nRadius + 175; return {x:tempx, y:tempy}; } public function deleteGraphic() { removeMovieClip(this); } public function vSpin() { mcBall.play(); } }