重复执行as3中的键盘事件

时间:2018-07-03 23:25:25

标签: actionscript-3 actionscript flash-cs5

我是AS3语言的新手。我想问问,只要按下按键,as3中的KeyboardEvent会执行吗? 为角色执行两次跳跃时,这给我带来了问题。 这是我的一些代码:

var dbJump:Boolean=true;
var onGround:Boolean=false;
var Yvel:Number=0;
var keyUp:Boolean=false;
this.addEventListener(Event.ENTER_FRAME,Eframe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, 
kDown) 
stage.addEventListener(KeyboardEvent.KEY_UP, 
kUp) 
function kDown(e:KeyboardEvent):void{
    var key:uint=e.keyCode;
    if(key==32){
       keyUp=true;
    }
}
function kUp(e:KeyboardEvent):void{
    var key:uint=e.keyCode;
    if(key==32){
        keyUp=false;
    }
}
function Eframe(e:Event):void{
    Yvel++;
    myChar.y+=Yvel;
    while(ground.hitTestPoint(myChar.x,myChar.y,true)){
        myChar.y--;
        Yvel=0;
    }
    if(ground.hitTestPoint(myChar.x,myChar.y+3,true)){
        onGround=true;
        //if touching ground then return the dbJump to true;
        dbJump=true;
    else{
        onGround=false;
        if(!keyUp){
            //if not on ground an not pressed space, dbJump 
            // still true
            dbJump=true;
        }
    }
    if(keyUp && dbJump && onGround){
        Yvel=-12;
    }
    // if space pressed and not on the ground
    else if(keyUp && dbJump && !onGround){
        Yvel=-12;
        //then say doublejump is completed
        dbJump=false;
        trace(dbJump);
    }
}

因此dbJump变量在第一次按空格键而不是第二次按空格键时立即变为false。我放了踪迹,所以我可以看到按键事件重复了多少。 因此,要点是,一旦我的角色离开地面,dbJump就会立即变为假。我还没有释放钥匙。我试图快速按下并释放空格键,并且它可以正常工作(所以我非常确定这是因为重复的语句'dbJump = false'。 如何解决? 另外,我的意思是,如果dbJump属性为false,则表示无法再次跳转/ doublejump已完成。

0 个答案:

没有答案