class Ball extends MovieClip { // values for x and y directions private var vx:Number; private var vy:Number; private var nTimer:Number; private var nTimerLimit:Number; public var nYSpeed:Number; public var nXSpeed:Number; private var bOffScreen:Boolean; function init() { nTimer = 0; nTimerLimit = (Math.random()*175) + 5; bOffScreen = true; _visible = false; onEnterFrame = movementLoop; } function movementLoop() { if(bOffScreen && nTimer < nTimerLimit) { nTimer = nTimer +1; } else if(bOffScreen && nTimer >= nTimerLimit) { beginCycle(); } else { //Check for wall hit if(_x < _width && nXSpeed < 0) { _x = 0; nXSpeed = nXSpeed * -1; } if(_x > (550 - _width/2) && nXSpeed > 0) { _x = (550 - _width/2); nXSpeed = nXSpeed * -1; } //ceiling if (_y + nYSpeed < 0) { _y = 0; nYSpeed = nYSpeed * -1; } //Gravity if (nYSpeed < 10) { nYSpeed = nYSpeed+.6; } //standard movement _y = _y + nYSpeed; _x = _x + nXSpeed; } } function getType():Number { return 1; } function beginCycle() { var pipeInfo = _parent.getPipePos(); //trace("beginning cycle " + _parent.getPipePos()); //reset timer for next time nTimer = 0; nTimerLimit = (Math.random()*35) + 5; nYSpeed = 1; bOffScreen = false; gotoAndPlay(Math.random()*15); nXSpeed = pipeInfo.xSpeed; _x = pipeInfo.xPos + 20 + (20)*Math.random(); _y = 50; _visible = true; } function offScreen() { bOffScreen = true; _visible = false; _x = -40; _y = -40; } function bounce(paddleSpeed:Number) { //trace("bounce"); nYSpeed = nYSpeed * -1; } }