Вы захотите создать пользовательский компонент кнопки и переопределить keyDownHandler. Но, если вы хотите выбрать кнопку (кнопки), которые нужно остановить, вам нужно добавить условие в код. Вот как это должно выглядеть:
package Sandbox
{
import mx.controls.Button;
import flash.events.KeyboardEvent;
public class KeyButton extends Button
{
public function KeyButton()
{
super();
}
protected override function keyDownHandler(e : KeyboardEvent) : void {
if (e.keyCode == 32) { // Spacebar
return;
}
else if (e.keyCode == 67) { // Letter C
this.parentApplication.setStyle ("backgroundColor", "#00aa00");
}
super.keyDownHandler (e);
}
}
}
Преимущество этого в том, что другие клавиши будут по-прежнему работать, например, Enter, или вы можете добавить дополнительные условные обозначения для разных клавиш, если, скажем, вы хотите изменить цвет кнопки, если вы нажали C или что-то еще.
И пока мы на этом, между KeyboardEvent.keyCode и charCode есть разница. keyCode - это идентификатор клавиши на физической клавиатуре, что означает, что строчные буквы c и заглавная буква C одинаковы (keyCode == 67). charCode, с другой стороны, является адресом символа в таблице ASCII, поэтому c и C различны (C равно 67, а c равно 99). keyCode нечувствителен к регистру, короче.
О да. И если вам нужно проверить ключ и коды символов ключа (включая произвольные, такие как Backspace), посмотрите эту страницу , которую сделали хорошие люди из Adobe.
Я также сделал приложение , чтобы проиллюстрировать это. Это стандартный проект Flex Builder, но его источник находится в папке src, если у вас его нет. Запустите приложение и нажмите кнопку, чтобы сфокусировать его. Некоторый текст должен появиться над кнопкой, благодаря событию нажатия кнопки. Пока он находится в фокусе, нажмите пробел, который должен запустить событие щелчка и напечатать больше текста, но ничего не происходит! Теперь нажмите клавишу c, чтобы изменить цвет фона приложения. Аккуратно, а?
Вы можете найти источник здесь .