软件需求:一个比较复杂的届面上有一个控件(upDownComponent),这个箭头可以通过上下键达到上下移动的效果。
好久没有做UI的东西了,最近开始使用ActionScript 3.0,感觉一切都是陌生的。而且鉴于Google的强大,导致过分依赖互联网。找了一下,几乎没有找到什么有用的东西,大部分搜索的结果都是一样的,就是根据ActionScript的例子,作了一个简单的键盘控制一个形状的移动。而这个代码放到我的工程里面完全不同了。
因为界面上有按钮,输入框这些可以接受焦点的控件,因此按上下键的效果使得这些控件成为了下一个焦点控件。不得已,翻开厚厚德Essential ActionScript 3.0,读了30多分钟,终于搞定。
首先让要被上下键控制的控件成为键盘事件的焦点控件,并取掉该控件被选择时flash加上学的选择框。
stage.focus = upDownComponent;
upDowComponent.focusRect = false;
接着,在stage中屏蔽掉上下键选择其他控件的事件代码如下:
stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocusChange);
private function onKeyFocusChange(evt:FocusEvent):void
{
if (evt.keyCode == Keyboard.UP || evt.keyCode == Keyboard.DOWN)
{
evt.preventDefault();
}
}
最后加上KeyboardEvent事件监听就好了。
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
private function onKeyDown(evt:KeyboardEvent):void
{
//Do what you want to do
}