Руководство по actionscript. часть 4, стр. 075
Клавиши, расположенные в нескольких местах. На некоторых клавиатурах определенные клавиши, расположенные в нескольких местах, имеют одинаковые коды. Например, на компьютере с операционной системой Mac OS и клавиатурой с раскладкой U. S. English код клавиши 16 представляет и левую, и правую клавиши Shift; код клавиши 17 представляет и левую, и правую клавиши Ctrl; код клавиши 13 представляет и основную клавишу Enter, и клавишу Enter на числовой клавиатуре. Чтобы отличать подобные клавиши, расположенные в нескольких местах, используется переменная экземпляра keyLocation класса KeyboardEvent, значение которой обозначает логическое положение клавиши, представленное в виде одной из четырех констант класса flash. ui. KeyLocation (LEFT, NUM_PAD, RIGHT и STANDARD). Эту методику демонстрирует следующий код. В нем функция-приемник события KeyboardEvent. KEY DOWN выводит одно отладочное сообщение в момент нажатия левой клавиши Shift, а другое — в момент нажатия правой клавиши Shift:
private function keyDownListener (e:KeyboardEvent):void { if (e. keyCode == Keyboard. SHIFT) { if (e. keyLocation == KeyLocation. LEFT) {
traceCThe left Shift key was pressed»); } else if (e. keyLocation == KeyLocation. RIGHT) { traceCThe right Shift key was pressed»);
}
}
}
Определение одновременного нажатия нескольких клавиш
Чтобы определить нажатие клавиши Shift или Ctrl (клавиша Command на компьютерах Macintosh) в сочетании с любой другой клавишей, мы используем переменные экземпляра shif tKey и ctrlKey класса KeyboardEvent в функции-приемнике события KeyboardEvent. KEY DOWN. Например, следующее простое приложение определяет нажатие сочетания клавиш Ctrl+S (Command+S на компьютерах Macintosh):
package { import flash. display.*; import flash. events.*;
public class CtrlSSensor extends Sprite { public static const S_KEY:int = 83;
public function CtrlSSensor ( ) { stage. addEventLi stener(KeyboardEvent. KEYJDOWN, keyDownLi stener);
}
private function keyDownListener (e:KeyboardEvent):void { if (e. keyCode == CtrlSSensor. S_KEY
*4
&& е. Ctrl Key — true) {
trace(«Ctrl+S was pressed»);
В автономной версии приложения Flash Player и в его версии, реализованной в виде 4 ч модуля расширения браузера, среда выполнения не может определить нажатие клавиши 4 За4 Alt (и клавиши F10).