AS3 Flash change combobox value cause keydown even

2019-09-03 03:26发布

问题:

I'm using Flash Pro CS6.

I created a fla project and put in a ComboBox. Then i place following code in action:

import flash.events.KeyboardEvent;

this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
this.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);

function onKeyDown(e:KeyboardEvent)
{
    trace("Keydown :" + e.charCode);
}

function onKeyUp(e:KeyboardEvent)
{
    trace("Keyup :" + e.charCode);
}

both event work fine at the beginning but when i change the ComboBox value, the event KEY_DOWN no longer work.

here is my sample project: Untitled-1.fla

回答1:

As Baris said, you should use stage.focus = null after selecting combobox element :

cb.addEventListener(Event.CHANGE, cb_on_change)
function cb_on_change(e:Event):void {
    stage.focus = null
}

Click anywhere on the stage dont solve problem if there is no element on the stage that will receive the focus.



回答2:

When you click on the combobox it gets focus which prevents keyboard events from firing on the stage.

Do they start working again if you click anywhere on the stage. Alternatively you can clear the focus with stage.focus = null.