Search code examples
actionscript-3keypress

Multiple key press conditionals in AS3


I'm creating a game that requires the simultaneous pressing of keys as a confirmation.

Currently, I am attempting to use charCode with && conditionals in an if statement:

function reportKeyDown(event:KeyboardEvent):void 
{ 
    if (event.charCode == 97 && 109 && 13)
    {
     gotoAndStop(30) 
    }
    else {
        gotoAndStop(20)
        //subtract 5hp
    }
} 
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);

So far it will only recognize the first key. Any ideas on how to solve this?


Solution

  • One possible solution is to save keyCodes in an array and check which keys was pressed after a short time

    stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
    var timer:Timer=new Timer(100);
    var tmpKeys:Array=[];
    timer.addEventListener(TimerEvent.TIMER,reportKeyDown);
    function keyDownHandler(e:KeyboardEvent):void{ 
        trace(e.keyCode);
        tmpKeys.push(e.keyCode);
        timer.start();
    } 
    function reportKeyDown(e:TimerEvent):void{
        if(keysAreDown([Keyboard.N,Keyboard.P])) //check for simultaneous pressing of 'n' and 'p'
            trace("yesss!");
        else
            trace("nooo!");
        tmpKeys=[];
        timer.stop();
    }
    function keysAreDown(keys:Array):Boolean{
        for each(var key:int in keys)
            if(tmpKeys.indexOf(key)==-1)
                return false;
        return true;
    }