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

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

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

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question FullScreen и ESCAPE

Привет всем. Пишу десктопное приложение.
В приложении нужно реализовать кнопку FullScreen. У кнопки есть два состояния - перейти в полноэкранный режим и перейти в нормальный. Тут все просто, все работает:

Код AS3:
btnFullScreen.addEventListener(MouseEvent.CLICK, btnFullScreenHandler);
 
private function btnFullScreenHandler(e:MouseEvent):void {
	if (stage.displayState == StageDisplayState.FULL_SCREEN){
		stage.displayState = StageDisplayState.NORMAL;
		btnFullScreen.mc.gotoAndStop("s2");
	} else {
		stage.displayState = StageDisplayState.FULL_SCREEN;
		btnFullScreen.mc.gotoAndStop("s1");
	}
 
}
Но есть проблема - по умолчанию из полноэкранного режима можно выходить по нажатию на клавишу "Esc", либо переключать состояния комбинацией "Ctrl + F". Как в данной ситуации менять состояние кнопки FullScreen?

Технически понятно - нужно отлавливать события клавиатуры. Но не всегда срабатывает - через раз. В чем ошибка? Либо есть другие варианты реализовать полноценную кнопку FullScreen?

Код AS3:
addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
 
private function keyDownHandler(e:KeyboardEvent):void {
	if (e.keyCode == Keyboard.ESCAPE){
		if (stage.displayState == StageDisplayState.FULL_SCREEN){
			btnFullScreen.mc.gotoAndStop("s2");
		}
	};
}
__________________
кто не отвечает, того garbage collector забирает

Старый 18.10.2014, 02:55
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 2  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
e.preventDefault() не сработает?

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

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Решил проблему более рациональным путем, используя FullScreenEvent. Зачем ловить нажатия клавиш, если достаточно ловить событие FullScreenEvent )

Класс для панели меню:

Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.display.StageDisplayState;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.FullScreenEvent; 
 
	public class MainMenu extends Sprite {
 
		public function MainMenu() {
			bg.alpha = 0.6;
			addEventListener(Event.ADDED_TO_STAGE, addToStageHandler);
		}
 
		private function addToStageHandler(e:Event):void {
			removeEventListener(Event.ADDED_TO_STAGE, addToStageHandler);
			stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);
			btnFullScreen.addEventListener(MouseEvent.CLICK, btnFullScreenClick);
		}
 
		private function fullScreenRedraw(e:FullScreenEvent):void { 
			if (e.fullScreen) {
				btnFullScreen.s2();
			} 
			else {
				btnFullScreen.s1();
			} 
		}
 
		private function btnFullScreenClick(e:MouseEvent):void {
			stage.displayState = (stage.displayState == StageDisplayState.FULL_SCREEN) ? StageDisplayState.NORMAL : StageDisplayState.FULL_SCREEN;
		}
 
	}
 
}
Класс для кнопок:

Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	public class BtnMenu extends MovieClip {
 
		private var defaultAlpha = 0.4;
 
		public function BtnMenu() {
			alpha = defaultAlpha;
			addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
			addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
			gotoAndStop(name);
			buttonMode = true;
		}
 
		private function onMouseOver(e:MouseEvent):void {
			alpha = 0.8;
		}
 
		private function onMouseOut(e:MouseEvent):void {
			alpha = defaultAlpha;
		}
 
		public function s2():void {
			mc.gotoAndStop("s2");
		}
 
		public function s1():void {
			mc.gotoAndStop("s1");
		}
	}
 
}
__________________
кто не отвечает, того garbage collector забирает

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

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

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


 


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


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