开发者

ctrl and space key used in Action script class?

I have a switch statement in my action script class.I have a function onKeyDown(event: KeyboardEvent) which contain a switch statement.which control the different keys. But now I want to handle the same functionality which TAB key is doing using two keys CTRL and SPACE key. I want add a case more in my switc开发者_JAVA技巧h statement first I pressed CTRL and then SPACE key then a a specific function is called.

Anyone can tell me how two keys used in my switch statement?

    private function onKeyDown(event: KeyboardEvent) : void{

        if (popUp.displayPopUp){
            switch (event.keyCode){
                case Keyboard.UP:
                case Keyboard.DOWN:
                case Keyboard.END:
                case Keyboard.HOME:
                case Keyboard.PAGE_UP:
                case Keyboard.PAGE_DOWN:
                    inputTxt.selectRange(text.length, text.length)
                    list.dispatchEvent(event)
                    break;
                case Keyboard.ENTER:
                    acceptCompletion();
                    break;
                case Keyboard.TAB:
                    if (requireSelection)
                        acceptCompletion();
                    else
                        popUp.displayPopUp = false
                    break;
                case Keyboard.ESCAPE:
                    popUp.displayPopUp = false
                    break;
                case Keyboard.CONTROL && Keyboard.SPACE:
                    if (requireSelection)
                        acceptCompletion();
                    else
                        popUp.displayPopUp = false
                    break;
            }
        }
    }  


This is a pretty common problem.

event.keyCode is only going to give you the keyCode for the most recent key pressed. So you will have to store key presses and key releases. Fortunately, AS3 is a pretty sweet Array implementation that allows this to be done easily.

var _keys:Array;

addEventListener(KeyboardEvent.KEY_DOWN, keyDownEvent);
addEventListener(KeyboardEvent.KEY_UP, keyUpEvent);

function keyDownEvent(e:KeyboardEvent)
{
    // turn the key on
    _keys[e.keyCode] = true;

    // perform logic
    keyLogic()
}
function keyUpEvent(e:KeyboardEvent)
{
    // turn the key off
    _keys[e.keyCode] = false;
}
function keyLogic()
{
    // this is where the actual logic is
    if(_keys[Keyboard.SPACE] && _keys[Keyboard.CONTROL])
    {
        if (requireSelection)
            acceptCompletion();
        else
            popUp.displayPopUp = false
    }
}

This allows you to have a neat little array that always tells you what keys are down. It also separates your program logic from your input logic. Double win.


In your case you can just check ctrlKey property on KeyboardEvent. But @DingoEatingFuzz's answer will allow check combinations like 'space' + 'letter' and so on.


case Keyboard.SPACE: if (event.ctrlKey) {

} break;

i think this one approch is good........

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜