0

So the question is really clear i think. if the player press a or d key the movieclip moves normal. but if player press A or D and release quickly and press then A or D the character will dash or sprint or whatever. here is the code :

function key_down(event:KeyboardEvent)
{
    switch (event.keyCode)
    {
        case 65 :
            leftKey = true;
            break;
        case 66 :
            punchKey = true;
            break;
        case 87 :
            upKey = true;
            break;
        case 68 :
            rightKey = true;
            break;
        case 83 :
            downKey = true;
            break;
        case 78 :
            jumpKey = true;
            break;
        case 77 :
            kickKey = true;
            break;
    }
}


 function key_up(event:KeyboardEvent)
 {

switch (event.keyCode)
{
    case 65 :
        leftKey = false;
        num++;
        if(num % 2 ==1){
        canRun = true;
        }
        else {
            canRun = false;
        }


        break;
    case 66 :
        punchKey = false;
        punchButton = true;
        break;
    case 87 :
        upKey = false;
        break;
    case 68 :
        rightKey = false;
        break;
    case 83 :
        downKey = false;
        break;
    case 78 :
        jumpKey = false;
        jumpButton = true;
        break;
    case 77 :
        kickKey = false;
        kickButton = true;
        break;

}
}

if (leftKey || rightKey || downKey || upKey)
{   
    if (! isJumping && ! isPunching && ! isKicking && ! isRunning )
    {   
                    // 5.frame is the walking animation
        speed = 7;
        hero.gotoAndStop(5);

    }
    if(! isJumping && ! isPunching && ! isKicking && isRunning ){
        // isRunning means that the character is Dashing
                    // 17.frame is the sprint animation
                    speed = 10;
        hero.gotoAndStop(17);

    }
    if (leftKey)  
    {   
        hero.scaleX = -1;
        speedX -=  speed;
    }
    if (rightKey)
    {
        hero.scaleX = 1;
        speedX +=  speed;
    }
4

1 回答 1

0

这是逻辑,但您必须针对您的项目对其进行调整。这适用于多个键顺便说一句。

var thresholdTime = 250;
var delaysUntilKeyUp = [];

public function onKeyDown(e):void {
    delaysUntilKeyUp[e.keyCode] = getTimer();

    switch (event.keyCode) {
        case 65 :
            //do something
            break;
    }
}

public function onKeyUp(e):void {

    delaysUntilKeyUp[e.keyCode] = getTimer() - delaysUntilKeyUp[e.keyCode];

    switch (event.keyCode) {
        case 65 :
            if( delaysUntilKeyUp[e.keyCode] <= thresholdTime ){
                // do something when the key was released quickly
            } else {
                // do something else, or maybe do nothing
            }
            break;
    }
}
于 2013-08-13T17:34:45.767 回答