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

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

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

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
По умолчанию Как узнать что нажато сочетание клавишь?

Мне нужно по нажатию ctrl + Enter выполнить определенное действие.
В хендлере нажатия клавиши пишу:
Код AS3:
trace(e.keyCode);
if (e.ctrlKey && (e.keyCode == Keyboard.ENTER)) {
    trace("ok");
}
При нажатии ctrl + Enter первый трейс дает 17, а второго просто нет...
Как быть?)

Старый 04.03.2010, 19:43
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 2  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
ну так может у вас второй раз эвент не ловится почему-то? Вы там removeEventListener не делаете случаем? Или может вы отсекаете trace() конструкцией if, и выполнение просто не попадает на ваш участок кода.

вставьте trace в начале функции и убедитесь, что вообще при втором нажатии эвент ловится.
и приведите всю вашу функцию

Старый 04.03.2010, 19:46
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 3  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
Вот полный метод:
Код AS3:
private function onKeyDown(e:KeyboardEvent):void {
			trace("1");
			if (_jasc.connected && (_inputMsg_ta.text != "")) {
				trace(e.keyCode);
				//if (e.ctrlKey && (e.keyCode == Keyboard.ENTER)) {
				if (e.keyCode == Keyboard.ENTER) {
					if (e.ctrlKey) {
					trace("3");
					var obj:Object = { };
 
					obj.name = myName;
					obj.type = "0";
					obj.msg = _inputMsg_ta.text;
					_inputMsg_ta.text = "";
					_jasc.sendServerMessage(obj);
				}}
			}
		}
Никаких removeEventLiatener() нет.

Добавлено позже...

Вот более/менее рабочий код
Код AS3:
		private function onKeyDown(e:KeyboardEvent):void {
			if (_jasc.connected && (_inputMsg_ta.text != "")) {
				_keys[e.keyCode]=true;
				if (_keys[17] && _keys[13]) {
					var obj:Object = { };
 
					obj.name = myName;
					obj.type = "0";
					obj.msg = _inputMsg_ta.text;
					_inputMsg_ta.text = "";
					_jasc.sendServerMessage(obj);
				}
			}
		}
 
		private function onKeyUP(e:KeyboardEvent):void {
			_keys[e.keyCode]=false;
		}
Минус его в том что нажимаеться как то неудобно, одновременно надо. А хотелось бы зажать ctrl, а уж потом Enter.


Последний раз редактировалось Aloran; 04.03.2010 в 21:18.
Старый 04.03.2010, 22:41
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
public class KeyboardEvent extends Event {
...
    /// Indicates whether the Alt key is active (true) or inactive (false).
    public function get altKey () : Boolean;
 
    /// Indicates whether the Control key is active (true) or inactive (false).
    public function get ctrlKey () : Boolean;
 
    /// Indicates whether the Shift key modifier is active (true) or inactive (false).
    public function get shiftKey () : Boolean;
...
}
__________________
Reality.getBounds(this);

Старый 04.03.2010, 23:38
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 5  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
Не совсем понял что с этим делать.

Спасибо вопрос решен. Работает нормально первый вариант!! Главное флешку через браузер запускать))) Видно такое сочетание блокируется стационарным плеером.


Последний раз редактировалось Aloran; 05.03.2010 в 01:12.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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