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

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

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

KeyChecker

Запись от Партизан размещена 26.11.2010 в 20:07
Обновил(-а) Партизан 27.11.2010 в 12:10 (новая версия кода)

(!) здесь новая версия

Чет написалось, вот...
Хорошая была вещь в AS2... Не помню уже как называлась KeyIsDown или что-то вроде того... Решил написать легкий аналог, потому как устал тестить что-нибудь и писать кучу переменных вроде private var _ctrlKeyDown:Boolean;
*задумался: Надо бы расширить....*

Код AS3:
package utils
{
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.display.Stage;
	import flash.events.KeyboardEvent;
 
	/**
	 * ...
	 * @author Mikhail Klabukov (SaintPartizan) Q_QWERT@mail.ru
	 */
	public class KeyCheck extends Object
	{
		private var _stage:Stage
		private var _keys:Array = [];
 
		public function KeyCheck(stage:Stage):void {
 
			if (stage as Stage) {				
				_stage = stage;
			}else {
				throw new ArgumentError("Stage needed")
			}
 
			_stage.addEventListener(KeyboardEvent.KEY_UP, keyUp, false, 0, true);
			_stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown, false, 0, true);
		}
 
		private function keyDown(e:KeyboardEvent):void 
		{
			_keys[e.keyCode] = true;
		}
 
		private function keyUp(e:KeyboardEvent):void 
		{
			_keys[e.keyCode] = false;
		}
		public function isDown(keyCode:int):Boolean {
			var down:Boolean = false;
			if (_keys[keyCode]) {
				down = true;
			}
			return down;
		}
	}
 
}
Всего комментариев 7

Комментарии

Старый 26.11.2010 20:17 iNils вне форума
iNils
 
Аватар для iNils
Вопрос, если в массиве уже хранится true/false, то зачем столько лишнего кода
Код AS3:
var down:Boolean = false;
if (_keys[keyCode]) {
	down = true;
}
return down;
когда нужно просто
Код AS3:
return _keys[keyCode]
Старый 26.11.2010 23:19 dimarik вне форума
dimarik
 
Аватар для dimarik
Привет! Тупой вопрос.
А зачем Вам
Код AS1/AS2:
private var _stage
Старый 26.11.2010 23:25 udaaff вне форума
udaaff
Если была нажата какая-то клавиша, приложение потеряло фокус и эта клавиша была отжата, то данные будут неверными. И наоборот, если была нажата какая-то клавиша и приложение получило фокус.
Обновил(-а) udaaff 26.11.2010 в 23:28
Старый 26.11.2010 23:56 Партизан вне форума
Партизан
 
Аватар для Партизан
Ну вот я и говорю, код написан на коленке, левым локтем.
iNils, чтобы исключить вариации кроме true/false
dimarik, просто привычка хранить переданное
udaff, да, надо продумать....
Старый 27.11.2010 00:09 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
iNils, чтобы исключить вариации кроме true/false
А их и не будет, метод возвращает Boolean, поэтому все null и undefined будет преобразованы в false.
Старый 27.11.2010 00:34 udaaff вне форума
udaaff
Цитата:
udaff, да, надо продумать....
Такую реализацию нашел http://www.kirupa.com/forum/showpost...&postcount=319
Хотя не совсем то...
Старый 27.11.2010 13:55 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Код AS3:
		public function KeyCheck(stage:Stage):void {
 
			if (stage as Stage) {
Удостоверение по пацански!
 
Последние записи от Партизан

 


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


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