code in frame 1 layer 1

//paddleBounce
//improve ball-paddle algorithm

init();

function init(){
  //turn off the mouse pointer
  Mouse.hide();

  //initialize ball speed
  ball.dx = 15;
  ball.dy = 5;
} // end init

player.onEnterFrame = function(){
  player._y = _root._ymouse;
} // end enterFrame

ball.onEnterFrame = function(){
  ball.move();
  ball.checkBoundaries();
  ball.checkPaddles();
} // end enterFrame

ball.move = function(){
  ball._x += ball.dx;
  ball._y += ball.dy;
} // end move

ball.checkBoundaries = function(){
  //bounce off top and bottom walls
  if (ball._y < 0){
    ball.dy = -ball.dy;
  } // end if

  if (ball._y > Stage.height){
    ball.dy = -ball.dy;
  } // end if

  //if past left of screen, opponent scores 
  //wrap for now
  if (ball._x < 0){
    trace("Opponent Scores");
    ball._x = Stage.width;
  } // end if

  //if past right of stage, player scores, 
  //bounce for now
  if (ball._x > Stage.width){
    trace ("Player scores");
    ball.dx = -ball.dx;
  } // end if
} // end checkboundaries

ball.checkPaddles = function(){
  //check to see if ball touches paddle
  if (ball.hitTest(player)){
    //simply bounce off for now
    ball.dx = -ball.dx;
    ball.dy = getDy(player);
  } // end if
} // end checkPaddles
  
function getDy(paddle){
  //determines dy based on where ball hits paddle.
  
  //relY is relative Y of ball to paddle
  relY = ball._y - paddle._y;
  //trace relY

  //relPerc is relY / height of paddle
  //will range from -.5 to +.5
  relPerc = relY / paddle._height;
  //trace (relPerc);

  //new DY ranges from -15 to +15
  newDy = relPerc * 30;
  //trace (newDy);
  return newDy;

} // end getDy