Question

I am very new to AS3, so apologies if this is something totally basic, but I can't get any output from my code. I am trying to make a flash game and am trying to test this code snippet to make sure that Flash is receiving the Keyboard input from the user. As said, I'm not getting any errors, but I'm also not getting anything in the output window. I'm sure I've missed something blatantly obvious to everyone else. If someone has an idea of what might be the problem I would be very grateful. Here is the code:

import flash.events.EventDispatcher;
import flash.events.Event;
import flash.events.KeyboardEvent;

    function keyDownHandler(event:KeyboardEvent):void
    {
    if(event.keyCode == Keyboard.LEFT)
    {
        trace("left pressed");
    }
    else if(event.keyCode == Keyboard.RIGHT)
    {
        trace("right pressed");
    } 
    else if(event.keyCode == Keyboard.UP)
    {
        trace("up pressed");
    }
    else if(event.keyCode == Keyboard.DOWN)
    {
        trace("down pressed");
    }

    stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);

    }
    function keyUpHandler(event:KeyboardEvent):void
    {
    if(event.keyCode == Keyboard.LEFT)
    {
        trace("left released");
    }
    else if(event.keyCode == Keyboard.RIGHT)
    {
        trace("right released");
    }
    else if(event.keyCode == Keyboard.UP)
    {
        trace("up released");
    }
    else if(event.keyCode == Keyboard.DOWN)
    {
        trace("down released");
    }  

        stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);

   }
Was it helpful?

Solution

Try this code:

import flash.events.EventDispatcher;
import flash.events.Event;
import flash.events.KeyboardEvent;

function keyDownHandler(event:KeyboardEvent):void
{
    if(event.keyCode == Keyboard.LEFT)
    {
        trace("left pressed");
    }
    else if(event.keyCode == Keyboard.RIGHT)
    {
        trace("right pressed");
    } 
    else if(event.keyCode == Keyboard.UP)
    {
        trace("up pressed");
    }
    else if(event.keyCode == Keyboard.DOWN)
    {
        trace("down pressed");
    }
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);

function keyUpHandler(event:KeyboardEvent):void
{
    if(event.keyCode == Keyboard.LEFT)
    {
        trace("left released");
    }
    else if(event.keyCode == Keyboard.RIGHT)
    {
        trace("right released");
    }
    else if(event.keyCode == Keyboard.UP)
    {
        trace("up released");
    }
    else if(event.keyCode == Keyboard.DOWN)
    {
        trace("down released");
    }
}
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);

Let me know if this works or not.

OTHER TIPS

Your listeners are never registered, you have them in the key handler functions, which will of course never fire without listener and therefore won't register the listener. You have to move them outside of the function block.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top