[AS3] Newbie Jump Problem

I’ve been looking over other threads/tutorials to figure out what I’ve done wrong on my code to make a character jump. He jumps up just fine, but refuses to reverse direction once the character leaves the ground or you let go of the space key.

My code has gotten a bit tangled because I keep tweaking things trying to figure out where my bug is. If anyone could look at my code and point me in the right direction, I would be most appreciated!!

package {

    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.display.Stage;
    import flash.ui.Keyboard;

    public class Game extends MovieClip {

        public var startMarker:StartMarker;
        public var mcPlayer:Player;
        public var boundaries:Boundaries;

        private var vx:Number;
        private var vy:Number;
        private var accX:Number;
        private var accY:Number;
        private var speedLimit:Number;
        private var rightMove:Boolean;
        private var leftMove:Boolean;
        private var friction:Number;
        private var gravity:Number;
        private var isOnGround:Boolean;
        private var jumpForce;

        public function Game():void {
            //create player
            createPlayer();

            //assign default values
            startMarker.visible=false;
            vx=0;
            vy=0;
            accX = 0;
            accY = 0;
            speedLimit = 5;
            friction=0.6;
            isOnGround = undefined;
            jumpForce = -16;
            gravity=10;
            



            //set focus to stage for keyboard input
            stage.focus=stage;

            //add event listeners
            this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
            stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

        }

        private function enterFrameHandler(e:Event):void {
            //apply acceleration;
            vx += accX;
            
            if(vx > speedLimit)
            {
                vx = speedLimit;
            }
            if(vx < -speedLimit)
            {
                vx = -speedLimit;
            }
            vy += accY;
            if(vy > speedLimit * 3)
            {
                vy = speedLimit *3;
            }
            
            
            //friction
            if(isOnGround)
            {
                vx*=friction;
            }
            if(Math.abs(vx) < 0.1)
            {
                vx = 0;
            }

            //gravity
            mcPlayer.y+=gravity;

            //process collisions
            processCollisions();

            //move player
            mcPlayer.x+=vx;
            mcPlayer.y+=vy;

            //scroll stage
            scrollStage();
            
            //jumping
            if(!isOnGround)
            {
                accY = 16;
            }
            
        }

        private function keyDownHandler(event:KeyboardEvent):void {

            //if player movng remove friction
            friction = 1;

            if (event.keyCode==37) {
                //trace("Key left is down");
                leftMove=true;
                accX = -4;
            }
            if (event.keyCode==39) {
                //trace("Key right is down");
                rightMove=true;
                accX = 4;
            }
            if (event.keyCode==32) {
                //jump code
                if(isOnGround)
                {
                    accY = jumpForce;
                    isOnGround = false;
                }
            }

        }

        private function keyUpHandler(event:KeyboardEvent):void {
            
            friction = 0.8;
            
            if (event.keyCode==37) {
                //trace("Key left is up");
                leftMove=false;
                accX = 0;
            }
            if (event.keyCode==39) {
                //trace("Key right is up");
                rightMove=false;
                accX = 0;
                
                
            }
            if (event.keyCode==32) {
                accY = 0;
            }
        }

        private function createPlayer():void {
            mcPlayer = new Player();
            stage.addChild(mcPlayer);

            mcPlayer.x=startMarker.x;
            mcPlayer.y=startMarker.y;
        }

        private function processCollisions():void {
            if (boundaries.hitTestPoint(mcPlayer.x,mcPlayer.y,true)) {
                mcPlayer.y=boundaries.y;
                isOnGround = true;
            }


        }


        private function scrollStage():void {
        }
    }
}