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

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

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Не обрабатывается кнопка Back на мобильном

Создаю мобильный проект на Flex. Использую ViewNavigatorApplication и несколько View.
Обратная навигация осуществляется двумя способами: хардверной клавишей Back и кнопкой "Назад" в заголовке каждого View. В первом случае производятся переходы по истории открытия вкладок с помощью navigator.popView();. Во втором, программно определяется на какую вкладку нужно вернуться - navigator.pushView(views.View);.

Все работает, но нужно чтобы на первом View (то что firstView) по нажатию на клавишу Back выводилась вьюшка с предложением закрыть приложение. Я оверрайдю backKeyUpHandler в главном MXML:
Код AS3:
override protected function backKeyUpHandler(event:KeyboardEvent):void
			{
				if (navigator.activeView.id == "first"){
					navigator.pushView(views.MyAppExitView);
				} else {
					navigator.popView();
				}
			}
Тоже работает, но только в случае, если возврат на первую вьюшку осуществляется программно (то есть navigator.pushView(views.MyAppFirstView). Если вернуться с помощью клавиши Back, то backKeyUpHandler не обрабатывается.

Нет мыслей как решить проблему?
Спасибо.

Старый 25.01.2012, 19:09
Ivanaka вне форума Посмотреть профиль Отправить личное сообщение для Ivanaka Посетить домашнюю страницу Ivanaka Найти все сообщения от Ivanaka
  № 2  
Ответить с цитированием
Ivanaka
 
Аватар для Ivanaka

Регистрация: Apr 2010
Сообщений: 67
Я ViewNavigatorApplication не использую, может не совсем то что вам нужно. Вот как вешаю действия на хардварные кнопки:

Код AS3:
//вешаем слушатель для кнопок
private function enableHardwareKeyListeners(event:FlexEvent):void {
				NativeApplication.nativeApplication.addEventListener("keyDown", handleButtons, false, 0, true);
			}
//функция выхода из приложения 
			public function closeApp():void{
				NativeApplication.nativeApplication.exit();
			}
//функция слушателя
			private function handleButtons(e:KeyboardEvent):void{
				if(e.keyCode == Keyboard.BACK)//если кнопка Back
				{
					e.preventDefault();
					if (currentState != 'general'){//если находимся не на главном view/state
						currentState = 'general';//идем на главный вид 
					}else{//если находимся на главной - вызываем диалоговое окно для закрытия приложения. Для закрытия юзаем closeApp()
					alertShow('EXIT');
					}
				}
				else if(e.keyCode == Keyboard.MENU){//если кнопка Menu
					e.preventDefault();
					//вызываем меню или еще чего
				}
			}
__________________
Mobile Ritmxoid

Старый 25.01.2012, 19:17
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 3  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Код AS3:
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
		xmlns:s="library://ns.adobe.com/flex/spark"
		actionBarVisible="false" overlayControls="false" tabBarVisible="false"  viewActivate="loadData()" viewDeactivate="die()" backKeyPressed="event.preventDefault();myCustonEvent();" >
Добавлено через 30 секунд
Код AS3:
backKeyPressed="event.preventDefault();myCustonEvent();"
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 25.01.2012, 19:23
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 4  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Ivanaka, спасибо. Я ещё попробую, конечно, но тогда все способы кажется перепробовал.

Добавлено через 2 минуты
Genzo, и это тоже попробую

Там проблема была в том, что выход по Back нужно сделать на первой View, а с остальных переход по иерархии назад.

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

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

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


 


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


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