Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > Партизан

Оценить эту запись

KeyChecker v0.2

Запись от Партизан размещена 27.11.2010 в 12:07

Из побуждений основанных на справедливых замечаниях камрадов [iNils, dimarik, udaff] , выкладываю следующую версию на худсовет обсуждение.
Потеря фокуса теперь отслеживается.
Теперь можно проверить сразу несколько клавиш(сочетание нажатий), KeyCheck.isDown(Keyboard.UP,Keyboard.TAB) например. Тут меня несколько смущает одна вещь. Последовательность нажатий не учитывается, как и количество клавиш. Например последовательности LEFT+UP+TAB и LEFT+TAB при нажатии этих трех кнопок будут возвращать true. Хотя может это просто мои заморочки? Или стоит сделать возможность учета последовательности нажатий? Часто ли нужна такая вещь?

Код AS3:
package utils
{
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
 
	/**
	 * ...
	 * @author Mikhail Klabukov (SaintPartizan) Q_QWERT@mail.ru
	 */
	public class KeyCheck extends Object
	{
		private var _keys:Array = [];
 
		public function KeyCheck(stage:Stage):void {
 
			if (stage) {
				stage.addEventListener(KeyboardEvent.KEY_UP, keyUp, false, 0, true);
				stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown, false, 0, true);
				stage.addEventListener(Event.DEACTIVATE, loseFocus, false, 0, true);
			}else {
				throw new ArgumentError("Stage needed")
			}
		}
 
		private function loseFocus(e:Event):void
		{
			_keys = [];
		}
 
		private function keyDown(e:KeyboardEvent):void
		{
			_keys[e.keyCode] = true;
		}
 
		private function keyUp(e:KeyboardEvent):void
		{
			_keys[e.keyCode] = false;
		}
 
		public function isDown(keyCode:uint, ...keys):Boolean {
			var down:Boolean = _keys[keyCode];
			if (keys.length > 0 && down) {
				for each(var i:uint in keys) {
					if (!_keys[i]) {
						down = false;
						break;
					}
				}
			}
			return down;
		}
	}
}
Всего комментариев 0

Комментарии

 
Последние записи от Партизан

 


Часовой пояс GMT +4, время: 12:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.