Below is the keyboard class i use when building any flash projects which require keyboard controls.
Over my years as an as3 developer I have seen many different implementations of the simple character movement code.

I often see people attaching the character movement script directly to the event handlers; that is not a good idea, as it causes a movement stutter when the user initially presses and holds down a movement key.

Instead its recommended (by me) to set boolean flagging when a direction has been invoked, and manage those states with an enter frame event.


 

Below is the simple script I use for the basis of top down character movement.  You could then add player rotations, acceleration, or an OOP approach for managing the script. Either way make sure you manage your player movement on the game loop and not directly keyboard event handlers

package
{

	import flash.events.Event;
	import flash.events.KeyboardEvent;
        /* Author John Stejskal */

	public class Game extends Sprite
	{

		private var isRight:Boolean = false;
		private var isLeft:Boolean = false;
		private var isUp:Boolean = false;
		private var isDown:Boolean = false;

        private var _moveSpeed:int = 5;
		private var _mcPlayer:Player;

		public function Game()
		{
		    if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}

		private function init(e:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);

            //create player and place in center of stage
            _mcPlayer:Player = new Player();
            _mcPlayer.x = stage.stageWidth/2;
            _mcPlayer.y = stage.stageHeight/2;
            stage.addChild(_mcPlayer)

            //Add keyboard listeners
			stage.addEventListener(KeyboardEvent.KEY_DOWN, downKey);
			stage.addEventListener(KeyboardEvent.KEY_UP, upKey);

            //add game loop
			stage.addEventListener(Event.ENTER_FRAME, loop);

		}

		//------------------------------o
        // Keyboard Event Handlers
        //------------------------------o

		private function downKey(event:KeyboardEvent)
		{
			//right press
			 if(event.keyCode==39){
			 isRight = true}
			 //left pressed
			 if(event.keyCode==37){
			 isLeft = true}
			 //up pressed
			 if(event.keyCode==38){
			 isUp = true }
			 //down pressed
			 if(event.keyCode==40){
			 isDown = true }

		}

		private function upKey(event:KeyboardEvent)
		{
			//right released
			 if(event.keyCode==39){
			 isRight = false}
			 //left released
			 if(event.keyCode==37){
			 isLeft = false}
			 //up released
			 if(event.keyCode==38){
			 isUp = false }
			 //down released
			 if(event.keyCode==40){
			 isDown = false }

		}

		//----------------------------------------o
		// Check if keys are down and move player
		//----------------------------------------o
		private function loop(Event)
		{
			 if(isRight){_mcPlayer.x+=_moveSpeed}
			 if(isLeft){_mcPlayer.x-=_moveSpeed}
			 if(isUp){_mcPlayer.y-=_moveSpeed}
			 if (isDown) {_mcPlayer.y += _moveSpeed}

		}

	}

}