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

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

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

Регистрация: Apr 2012
Сообщений: 70
По умолчанию AIR приложение и горячие клавиши

Добрый день!

Пишу приложение для ПК простой секундомер . Мне необходимо, чтоб при нажатии, например Ctrl+Alt+D, срабатывало timer.start();
Как это реализовать?

Старый 16.07.2012, 11:49
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 2  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Код AS3:
addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
trace(e);
if ((e.keyCode == глядите) && (e.ctrlKey)&& (e.altKey)) {
// вы нажали Ctrl+Alt+D
}
});

Старый 16.07.2012, 12:09
Wazzabi вне форума Посмотреть профиль Отправить личное сообщение для Wazzabi Найти все сообщения от Wazzabi
  № 3  
Ответить с цитированием
Wazzabi

Регистрация: Apr 2012
Сообщений: 70
Написал, скомпилировал....
Гор.клавиши не запускают таймер.
Но если сделать на кнопочках (которые на сцене) старт-стоп, а потом уже нажать на гор.клавиши таймер запускается....


Последний раз редактировалось Wazzabi; 16.07.2012 в 12:40.
Старый 16.07.2012, 12:30
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 4  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Используйте трейсы. Посмотрите в обработчике чему равны e.ctrlKey и e.altKey, а также e.keyCode при нажатии ваших горячих клавиш. Сообщите нам о результате.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
а почему не:
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
?

Старый 16.07.2012, 12:45
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 6  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Ctrl+Alt+D - "системный" хоткей. Отловить его нажатие на уровне обычного приложения нетривиальная задача. Боюсь, что рантайм айра на такое не заточен.

Старый 16.07.2012, 12:45
Wazzabi вне форума Посмотреть профиль Отправить личное сообщение для Wazzabi Найти все сообщения от Wazzabi
  № 7  
Ответить с цитированием
Wazzabi

Регистрация: Apr 2012
Сообщений: 70
вот мой Main класс
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	import flash.events.MouseEvent;
	import flash.events.KeyboardEvent;
 
	public class Main extends MovieClip {
 
		public var myTimer:Timer;
		public var duration:int = 30;
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			addEventListener(KeyboardEvent.KEY_DOWN, keyboardHandler);
 
			startBtn.addEventListener(MouseEvent.CLICK, onClick);
			resetBtn.addEventListener(MouseEvent.CLICK, onClick);
			stopBtn.addEventListener(MouseEvent.CLICK, onClick);
 
 
 
			myTimer = new Timer(1000, duration);
 
			myTimer.addEventListener(TimerEvent.TIMER, onTimer);
			ttext1.text = getBeautifulCount();
 
                        // и сюда пробовал вставлять, но эффекта нет
			//addEventListener(KeyboardEvent.KEY_DOWN, keyboardHandler);
		}
 
		private function keyboardHandler(e:KeyboardEvent):void 
		{
			trace(e);
			if ((e.keyCode == 68) && (e.ctrlKey) && (e.altKey))
			{
				trace("hotkey");
				myTimer.start();
			}
		}
 
		private function onClick(e:MouseEvent):void 
		{
			switch (e.target.name) 
			{
				case 'startBtn':
					myTimer.start();
					break;
 
				case 'stopBtn':
					myTimer.stop();
					break;
 
				case 'resetBtn':
					myTimer.reset();
					ttext1.text = "0";
					break;
			}
 
 
 
		}
 
		private function onTimer(e:TimerEvent):void 
		{
			trace(myTimer.currentCount.toString());
			ttext1.text = getBeautifulCount();
		}
 
                // следующий код взят из этого форума =)
		private function getCount():uint
		{
			return duration - myTimer.currentCount;
		}
 
		private function getBeautifulCount():String
		{
			var count:int = getCount();
			var m:String = String("0" + int(count / 60)).substr(-2, 2);
			var s:String = String("0" + (count % 60)).substr(-2, 2);
			return m + ":" + s;
		}
	}
 
}
вот что выдают трейсы
Код:
1
2
3
[KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=18 keyLocation=1 ctrlKey=false altKey=true shiftKey=false controlKey=false commandKey=false]
[KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=0 keyCode=17 keyLocation=1 ctrlKey=true altKey=true shiftKey=false controlKey=true commandKey=false]
[KeyboardEvent type="keyDown" bubbles=true cancelable=true eventPhase=3 charCode=100 keyCode=68 keyLocation=0 ctrlKey=true altKey=true shiftKey=false controlKey=true commandKey=false]
hotkey
4
5
6

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Ctrl+Alt+D - "системный" хоткей.
Не правда.

Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
 
	/**
	 * ...
	 * @author casey ryan
	 */
	public class Main extends Sprite {
 
		public function Main():void {
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
		}
 
		private function onKeyUp(e:KeyboardEvent):void {
			if (e.keyCode == Keyboard.D && e.ctrlKey && e.altKey) {
				trace("Ctrl + Alt + D pressed"); // срабатывает на ура
			}
		}
 
	}
 
}

Старый 16.07.2012, 12:52
Wazzabi вне форума Посмотреть профиль Отправить личное сообщение для Wazzabi Найти все сообщения от Wazzabi
  № 9  
Ответить с цитированием
Wazzabi

Регистрация: Apr 2012
Сообщений: 70
что правильней использовать KeyboardEvent.KEY_UP или KeyboardEvent.KEY_DOWN в этом случае, т.е. когда нужны хоткеи

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
лучше UP, но все зависит от логики самого приложения

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

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

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


 


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


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