How do i play a moveiclip from the library with a key press

135 Views Asked by At

im trying to play a moveiclip from the library with a key press and i have as linked it but it still does not work (this is only a bit of the code there are event listeners and handlers in place and the character moves fine)

stage.addEventListener(Event.ENTER_FRAME, Move);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);

var aP:Boolean = false;
var dP:Boolean = false;
//creating a new Character_right instance
var character_right:Character_right = new Character_right(); 

function Move(vet:KeyboardEvent)
{
    if(aP)
    {
        char.x -= 5;
        char.scaleX = -0.55;
    }
    if(dP)
    {
        char.x += 5;
        char.scaleX = -0.55;
    }
}

function keyPress(evt:KeyboardEvent)
{
    switch(evt.keyCode)
    {
        case Keyboard.A:
        {
        aP = true;
        break;
        }
        case Keyboard.D:
        {
        dP = true;
        character_right.play(); 
        break;
        }
     }
}

function keyUp(evt:KeyboardEvent)
{
        switch(evt.keyCode)
    {
        case Keyboard.A:
        {
        aP = false;
        break;
        }
        case Keyboard.D:
        {
        dP = false;
        break;
        }
     }
}
2

There are 2 best solutions below

1
On

In your code, you are executing the function Character_right.play() after break and break stops the rest of the loop code from being executed, so execute Character_right.play() before break, for example:

function keyPress(evt:KeyboardEvent)
{
    switch(evt.keyCode)
    {
        case Keyboard.A:
        {
        aP = true;

        break;
        }
        case Keyboard.D:
        {
        dP = true;
        Character_right.play();
        break;
        }
     }
}
2
On

Check this post, with a nice tutorial about keyboard events, I believe will be important for you to understand the concept and implement on your logic.

Briefly it's something like the following example, but remember about to implement all necessary logic for your scope.

        var isRight:Boolean;
        var isLeft:Boolean;
        var isUp:Boolean;
        var isDown:Boolean;
        //creating a new Character_right instance
        var character_right:Character_right = new Character_right(); 

        stage.addEventListener(KeyboardEvent.KEY_DOWN, downKeyHandler, false, 0, true);
        function downKeyHandler(event:KeyboardEvent):void
        {
            if (event.keyCode == Keyboard.RIGHT )
            {
                isRight = true;
            }
            if (event.keyCode == Keyboard.LEFT)
            {
                isLeft = true;
            }
            if (event.keyCode == Keyboard.UP)
            {
                isUp = true;
            }
            if (event.keyCode == Keyboard.DOWN)
            {
                isDown = true;
            }
        }

        stage.addEventListener(KeyboardEvent.KEY_UP, upKeyHandler, false, 0, true);
        function upKeyHandler(event:KeyboardEvent):void
        {
            if (event.keyCode == Keyboard.RIGHT)
            {
                isRight = false;
            }
            if (event.keyCode == Keyboard.LEFT)
            {
                isLeft = false;
            }
            if (event.keyCode == Keyboard.UP)
            {
                isUp = false;
            }
            if (event.keyCode == Keyboard.DOWN)
            {
                isDown = false;
            }
        }

        stage.addEventListener(Event.ENTER_FRAME, loopHandler, false, 0, true);
        function loopHandler(event:Event):void
        {
            if (isRight)
            {
                //do something here…
                                    character_right.play();
                            }
            if (isLeft)
            {
                //do something here...
            }
            if (isUp)
            {
                //do something here...
            }
            if (isDown)
            {
                //do something here...
            }
        }