addEventListener() isn't detecting KEY_UP nor KEY_DOWN
- by Zirenth
My full code is
    import flash.events.KeyboardEvent;
    import flash.events.Event;
//init some variables
var speedX = 0;
var speedY = 0;
msg.visible = false;
var curLevel = 2;
var level = new Array();
var flagVar;
var won = false;
//Adding level platforms
for(var i = 0; i < numChildren; i++) {
    if(getChildAt(i) is platform) {
        level.push(getChildAt(i).getRect(this));
    }
    if(getChildAt(i) is flag) { flagVar = getChildAt(i).getRect(this); }
}
//Checking key presses
var kUp     = false;
var kDown   = false;
var kLeft   = false;
var kRight  = false;
var kSpace  = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, kD);
stage.addEventListener(KeyboardEvent.KEY_UP, kU);
function kD(k:KeyboardEvent) {
    trace("Key down - " + k.keyCode);
    if(k.keyCode == 32) { kSpace    = true; }
    if(k.keyCode == 37 ) { kLeft    = true; }
    if(k.keyCode == 38) { kUp       = true; }
    if(k.keyCode == 39) { kRight    = true; }
}
function kU(k:KeyboardEvent) {
    trace("Key up - " + k.keyCode);
    if(k.keyCode == 32) { kSpace    = false; }
    if(k.keyCode == 37) { kLeft     = false; }
    if(k.keyCode == 38) { kUp       = false; }
    if(k.keyCode == 39) { kRight    = false; }
}
addEventListener(Event.ENTER_FRAME, loopAround);
function loopAround(e:Event) {
    //horizontal movement
    if(kLeft) {
        speedX = -10;
    } else if(kRight) {
        speedX = 10;
    } else {
        speedX *= 0.5;
    }
    player.x += speedX;
    //horizontal collision checks
    for(var i = 0; i < level.length; i++) {
        if(player.getRect(this).intersects(level[i])) {
            if(speedX > 0) {
                player.x = level[i].left - player.width;
            }
            if(speedX < 0) {
                player.x = level[i].right;
            }
            speedX = 0;
        }
    }
    //vertical movement
    speedY += 1;
    player.y += speedY;
    var jumpable = false;
    //Vertical collision
    for(i = 0; i < level.length; i++) {
        if(player.getRect(this).intersects(level[i])) {
            if(speedY > 0) {
                player.y = level[i].top - player.height;
                speedY = 0;
                jumpable = true;
            }
            if(speedY < 0) {
                player.y = level[i].bottom;
                speedY *= -0.5;
            }
        }
    }
     //JUMP!
    if((kUp || kSpace) && jumpable) {
        speedY=-20;
    }
    //Moving camera and other
    this.x = -player.x + (stage.stageWidth/2);
    this.y = -player.y + (stage.stageHeight/2);
    msg.x = player.x - (msg.width/2);
    msg.y = player.y - (msg.height/2);
    //Checking win
    if(player.getRect(this).intersects(flagVar)) {
        msg.visible = true;
        won = true;
    }
    //Check for next level request
    if(kSpace && won) {
        curLevel++;
        gotoAndStop(curLevel);
        won = false;
    }
}
The section in question is
    //Checking key presses
    var kUp     = false;
    var kDown   = false;
    var kLeft   = false;
    var kRight  = false;
    var kSpace  = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, kD);
stage.addEventListener(KeyboardEvent.KEY_UP, kU);
function kD(k:KeyboardEvent) {
    trace("Key down - " + k.keyCode);
    if(k.keyCode == 32) { kSpace    = true; }
    if(k.keyCode == 37 ) { kLeft    = true; }
    if(k.keyCode == 38) { kUp       = true; }
    if(k.keyCode == 39) { kRight    = true; }
}
function kU(k:KeyboardEvent) {
    trace("Key up - " + k.keyCode);
    if(k.keyCode == 32) { kSpace    = false; }
    if(k.keyCode == 37) { kLeft     = false; }
    if(k.keyCode == 38) { kUp       = false; }
    if(k.keyCode == 39) { kRight    = false; }
}
This was working fine last night, but today I moved it to a new keyframe and now it's not working.  I'm not getting any errors (even if I debug).  It just won't move the character or even show up in output.
I'm still quite new to as3, so I don't really know what to do.
Thanks in advance.
Edit: After playing with it a bit, I've found out that the reason it's not working is due to the menu.  The menu has a single button and two text elements, which are fine.  The code that I'm using on the menu is this:
import flash.events.MouseEvent;
stop();
var format:TextFormat = new TextFormat();
format.size = 26;
format.bold = true;
playGameButton.setStyle("textFormat", format);
stage.addEventListener(MouseEvent.CLICK, playGame);
function playGame(e:MouseEvent) {
    if(e.target.name == "playGameButton") {
        gotoAndStop(2);
    }
}
If I use just gotoAndStop(2); it works fine, but with everything else it just goes to the second frame, and nothing else works after that.
Edit #2: I've narrowed it down even farther to the if statement itself.
if(e.target == playGameButton)
if(e.target.name == "playGameButton")
Both of those don't work.  If I just remove the if statement all together it works perfectly fine.