Руководство по actionscript. часть 4, стр. 076
Чтобы определить одновременное нажатие двух или более обычных клавиш, не являющихся Shift и Ctrl, мы должны вручную отслеживать текущее состояние каждой клавиши. Эту методику демонстрирует следующий код. В нем приложение отображает отладочное сообщение, когда происходит одновременное нажатие клавиш <— и т. подобный код может использоваться для поворота автомобиля или для перемещения по диагонали космического корабля в компьютерной игре.
package { import flash. display.*; import flash. events.*; import flash. ui.*;
// Определяет одновременное нажатие клавиш «стрелка вверх» и «стрелка влево» public class UpLeftSensor extends Sprite {
// Отслеживает состояние стрелки «вверх»
// (true, когда нажата; false в противном случае)
private var upPressed:Boolean;
// Отслеживает состояние стрелки «влево»
// (true, когда нажата; false в противном случае)
private var leftPressed:Boolean;
public function UpLeftSensor ( ) { //-Регистрируем приемники для событий клавиатуры stage. addEventLi stener(KeyboardEvent. KEYJDOWN, keyDownLi stener); stage. addEventLi stener(KeyboardEvent. KEY_UP, keyUpLi stener);
}
// Обрабатывает события KeyboardEvent. KEYJDOWN private function keyDownListener (e:KeyboardEvent):void { // Делаем пометку, была ли нажата клавиша «стрелка вверх» или «стрелка влево» if (е. keyCode == Keyboard. UP) {
upPressed = true; } else if (e. keyCode == Keyboard. LEFTJ { leftPressed = true;
}
// Если клавиши «стрелка вверх» и «стрелка влево» были нажаты одновременно… if (upPressed && leftPressed) {
// …выполняем определенное действие, например поворачиваем
// космический корабль по диагонали вверх и влево
traceCUp Arrow key and Left Arrow key are both pressed»);
}
}
// Обрабатывает события KeyboardEvent. KEYJJP private function keyUpListener (e;KeyboardEvent):void { // Делаем пометку, была ли отпущена клавиша «стрелка вверх» // или «стрелка влево» if (е. keyCode == Keyboard. UP) {
upPressed = false; } else if (e. keyCode == Keyboard. LEFT) { leftPressed = false;
}
}
}
События мыши и клавиши-модификаторы
Подобно тому как язык ActionScript позволяет легко проверить, были ли нажаты клавиши Shift или Ctrl в процессе диспетчеризации события ввода с клавиатуры, он также дает возможность узнать, были ли нажаты клавиши Shift или Ctrl в процессе диспетчеризации события ввода с помощью мыши. Для этого внутри функции-приемника, зарегистрированной для данного события, используются переменные экземпляра shif tKey и ctrlKey класса MouseEvent. Например, следующий код выводит отладочное сообщение, когда происходит щелчок кнопкой мыши при нажатой клавише Shift. Подобный код может быть использован в программе рисования для ограничения перемещения объекта по горизонтальной или вертикальной оси.