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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.05.2015, 18:08
Rembrant вне форума Посмотреть профиль Отправить личное сообщение для Rembrant Найти все сообщения от Rembrant
  № 1  
Ответить с цитированием
Rembrant
 
Аватар для Rembrant

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
По умолчанию Определить нажатие shift или ctrl

Всем привет.
Подскажите, есть ли возможность определить в флешке, зажата ли сейчас клавиша shift или ctrl, в произвольный момент времени (нет возможности дёрнуть MouseEvent или KeyboardEvent)

Старый 14.05.2015, 21:33
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 2  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от Rembrant Посмотреть сообщение
Всем привет.
Подскажите, есть ли возможность определить в флешке, зажата ли сейчас клавиша shift или ctrl, в произвольный момент времени (нет возможности дёрнуть MouseEvent или KeyboardEvent)
Можно соответствующую ячейку памяти проверить. Номер таковой в windows не помню, в DOS'е была 0x417, последние два бита отвечали за левый и правый shift'ы, другие за ctrl, alt, капс лок, нум лок, скролл лок
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe

Старый 15.05.2015, 07:26
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Можно соответствующую ячейку памяти проверить. Номер таковой в windows не помню, в DOS'е была 0x417, последние два бита отвечали за левый и правый shift'ы, другие за ctrl, alt, капс лок, нум лок, скролл лок
Можно пример как это сделать из флеш плеера? Что-то меня разбирают дикие сомнения по поводу возможности такой операции из as3 в принципе


По теме. Просто можно использовать этот класс:
Код AS3:
package  {
 
	import flash.display.Stage;
	import flash.display.StageDisplayState;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.geom.Rectangle;
	import flash.ui.Keyboard;
 
	public class Key {
 
		private static var initialized:Boolean = false;		
		private static var keysDown:Object = new Object();	
 
		public static function initialize(stage:Stage):void {
			if (!initialized) {
				stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
				stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
				stage.addEventListener(Event.DEACTIVATE, clearKeys);
				initialized = true;
			}
		}
 
		public static function isDown(keyCode:uint):Boolean {
			if (!initialized) {
				throw new Error("Key class has yet been initialized.");
			}
			return Boolean(keyCode in keysDown);
		}
		private static function keyPressed(event:KeyboardEvent):void {
			if (event.ctrlKey) {
				keysDown[Keyboard.CONTROL] = true;
			} else if (event.shiftKey) {
				keysDown[Keyboard.SHIFT] = true;
			} else if (event.altKey) {
				keysDown[Keyboard.ALTERNATE] = true;
			}
			keysDown[event.keyCode] = true;
 
		}
		private static function keyReleased(event:KeyboardEvent):void {
			if (event.keyCode in keysDown) {
				delete keysDown[event.keyCode];
			}
		}
		private static function clearKeys(event:Event):void {
			keysDown = new Object();
		}
	}
}
В документ классе инициализируем, скормив stage методу initialize(), а дальше в любом месте используем
Код AS3:
trace(Key.isDown(Keyboard.CONTROL));

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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