Руководство по 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. Подобный код может быть использован в программе рисования для ограничения перемещения объекта по горизонтальной или вертикальной оси.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.47
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.16
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.121
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.84
  • 14.03.2012">В Google Maps обновились снимки разрушенных городов Японии
  • 11.03.2011">Руководство по actionscript. часть 4, стр. 013
  • 17.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.11
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 054
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.106
  • 15.03.2011">Руководство по actionscript. часть 3, стр. 041
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.126
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 148
  • 01.03.2011">Руководство по actionscript. часть 5, стр. 119
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.73
  • 28.02.2011">Руководство по actionscript. часть 5, стр. 136
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...