簡體   English   中英

AS3中的多個按鍵條件

[英]Multiple key press conditionals in AS3

我正在創建一個需要同時按下按鍵作為確認的游戲。

目前,我正在嘗試在if語句中將charCode與&&條件一起使用:

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

到目前為止,它只會識別第一個密鑰。 關於如何解決這個問題的任何想法?

一種可能的解決方案是將keyCodes保存在數組中,並檢查短時間后按下了哪些鍵

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM