我是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已完成。