[Flash8 AS2] Key movement problem inside class

Ok so im having a problem with moving a MovieClip with the keys.

The movement keys are the standard ‘a, s, d, w’ keys.
The problem is that only 1 key is being detected as held down, even if Im holding down 2 keys. The second problem is when I release the keys, the MovieClip continues to move the direction of the last key pressed…

Here’s part of my code that detects the keys being held down.

// Variables declared for class (just so you's understand whats going on)
 // Movement keys constant ascii values
 private var UP:Number = 119;
 private var DOWN:Number = 115;
 private var LEFT:Number = 97;
 private var RIGHT:Number = 100;
/*************************************/
 
 
/* Checks if any keys are being held down
 * Function is private as it has no return value and is only used inside this class file
 */
 private function checkKeys()
 {
  if(Key.isDown)
  {
   // Up and Down movement keys
   if(Key.getAscii(Key.isDown) == UP)
   {
    ypos -= speed;
   }
   else if(Key.getAscii(Key.isDown) == DOWN)
   {
    ypos += speed;
   }
 
   // Left and Right movement keys
   if(Key.getAscii(Key.isDown) == LEFT)
   {
    xpos -= speed;
   }
   else if(Key.getAscii(Key.isDown) == RIGHT)
   {
    xpos += speed;
   }
  }
 }

I then have another function which updates the MovieClip’s position, like so:
this._x = xpos;
this._y = ypos;

I dont understand whats going wrong… Ive coded a game like this before and it works fine, but this is my first one using actionscript classes in seperate files. Is it something to do with that?
Whats the correct way I should be coding Key detection (for smooth movement) inside a seperate class file?