|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Обработка нажатия Keyboard.BACK в AIR Mobile
Столкнулся с необходимостью возвращать игрока в стартовое меню по нажатию кнопки BACK на андроиде.
Думал повешу слушатель на NativeApplication а потом в обработчике просто будут вызывать e.preventDefaul() и выполнять нужное мне действие. Но не тут то было. Обработчик срабатывает без проблем, но приложение просто закрывается. Собственно вопрос: как это обойти? Мне не нужно, чтобы оно закрывалось / сворачивалось при первом же клике по кнопке back |
|
|||||
Писал пол года назад под AIR, тоже была такая задача. Если проигрывается видео, то выходим в меню.
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onDownKey, false, 0, true); private function onDownKey(e:KeyboardEvent):void { if (e.keyCode == Keyboard.BACK) { e.preventDefault(); e.stopImmediatePropagation(); if (_videoPlayer.isPlaying) { // возврат в меню } else { exitApp(); } } } |
|
|||||
Я обрабатываю кнопку Назад на Андоиде так. Во-первых она закрывает любой поп-ап в первую очередь для удобства. Если поп-апов нет, то выводит попап с предупреждением "Действительно хотите выйти? Да/Нет".
Слушатель вешаю на главный спрайт. Вот пример для Старлинга. if (Capabilities.manufacturer.indexOf("iOS") == -1) { this.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); } protected function onKeyDown(event:KeyboardEvent):void { if( event.keyCode == Keyboard.BACK ) { event.preventDefault(); var popups:Boolean = false; for (var i:int = 0; i < stage.numChildren; i++) { if (PopUpManager.isTopLevelPopUp(stage.getChildAt(i))){ popups = true; PopUpManager.removePopUp(stage.getChildAt(i), true); } } if (!popups) { var popup:AlertPanelTwoButtons = new AlertPanelTwoButtons(Main.Loc['EXIT'],Main.Loc['EXIT_TEXT']); popup.addEventListener(Event.CLOSE, alertExitClosed); PopUpManager.addPopUp(popup); } } } private function alertExitClosed(e:Event):void { if (String(e.data) == 'ok'){ NativeApplication.nativeApplication.exit(); } }
__________________
In Code We Trust |
|
|||||
У тебя event.preventDefault() срабатывает?
У меня почему-то нет. Сама кнопка-то нормально обрабатывается, но вот preventDefault() обработчику как-будто пофиг. Хотя не удивлюсь, если это опять особенности самсунговского андроида. С ориентацией экрана у него тоже свои траблы есть, на которые пришлось писать костыли |
|
|||||
Цитата:
private function onKeyUp(e:KeyboardEvent):void { if (!_startMenu) return; if (e.keyCode == Keyboard.BACK) { e.preventDefault(); e.stopImmediatePropagation(); if (_startMenu.parent == null) { trace("IF CODE WORKED"); // это трейсится showStartMenu(); } else { trace("ELSE CODE WORKED"); NativeApplication.nativeApplication.exit(); } } } |
|
|||||
Регистрация: Jul 2008
Сообщений: 46
|
хм) Ситуация обратная, мне НУЖНО закрыть приложение.
NativeApplication.nativeApplication.exit() его убивает, однако в списке запущенных приложение продолжает висеть с последним открытым экраном, однако при попытке вызвать это злополучное приложение, не восстанавливает его, а запускает с нуля, это почему так может быть? |
Часовой пояс GMT +4, время: 04:01. |
|
« Предыдущая тема | Следующая тема » |
|
|