|
|
|||||
Регистрация: Apr 2012
Сообщений: 70
|
AIR приложение и горячие клавиши
Добрый день!
Пишу приложение для ПК простой секундомер . Мне необходимо, чтоб при нажатии, например Ctrl+Alt+D, срабатывало timer.start(); Как это реализовать? |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
|
|
|||||
Регистрация: Apr 2012
Сообщений: 70
|
Написал, скомпилировал....
Гор.клавиши не запускают таймер. Но если сделать на кнопочках (которые на сцене) старт-стоп, а потом уже нажать на гор.клавиши таймер запускается.... Последний раз редактировалось Wazzabi; 16.07.2012 в 12:40. |
|
|||||
Используйте трейсы. Посмотрите в обработчике чему равны e.ctrlKey и e.altKey, а также e.keyCode при нажатии ваших горячих клавиш. Сообщите нам о результате.
|
|
|||||
Регистрация: Apr 2012
Сообщений: 70
|
вот мой Main класс
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 |
|
|||||
Цитата:
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"); // срабатывает на ура } } } } |
|
|||||
Регистрация: Apr 2012
Сообщений: 70
|
что правильней использовать KeyboardEvent.KEY_UP или KeyboardEvent.KEY_DOWN в этом случае, т.е. когда нужны хоткеи
|
Часовой пояс GMT +4, время: 22:55. |
|
« Предыдущая тема | Следующая тема » |
|
|