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

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

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

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
Не подумайте что игнорирую, просто немножко не понимаю, но все таки, взяв за основу ваш пост gloomyBrain, у меня получилось вот что
Код AS3:
private function inPousePanel():void 
		{
			super.stage.focus = interfac.pouse_mc.restart_btn;
			addEventListener(KeyboardEvent.KEY_DOWN, keyFocus);
		}
 
private function keyFocus(e:KeyboardEvent):void 
{
	if (e.keyCode == 37) {
		switch(super.stage.focus) {
			case interfac.pouse_mc.restart_btn:super.stage.focus = interfac.pouse_mc.gallery_btn; break;
			case interfac.pouse_mc.gallery_btn:super.stage.focus = interfac.pouse_mc.help_btn; break;
			case interfac.pouse_mc.help_btn:super.stage.focus = interfac.pouse_mc.resume_btn; break;
			case interfac.pouse_mc.resume_btn:super.stage.focus = interfac.pouse_mc.restart_btn; break;
		}
	}
	if (e.keyCode == 39) {
		switch(super.stage.focus) {
			case interfac.pouse_mc.restart_btn:super.stage.focus = interfac.pouse_mc.resume_btn; break;
			case interfac.pouse_mc.resume_btn:super.stage.focus = interfac.pouse_mc.help_btn; break;
			case interfac.pouse_mc.help_btn:super.stage.focus = interfac.pouse_mc.gallery_btn; break;
			case interfac.pouse_mc.gallery_btn:super.stage.focus = interfac.pouse_mc.restart_btn; break;
		}
	}
	if (e.keyCode == 13) {
		switch(super.stage.focus) {
			case interfac.pouse_mc.restart_btn:restartLevel(); break;
			case interfac.pouse_mc.gallery_btn:returnToGallery(); break;
			case interfac.pouse_mc.help_btn:; break;
			case interfac.pouse_mc.resume_btn:resumeGame(); break;
		}
	}
}
Смысл:
При открытии окна вызывается функция "inPousePanel", в ней ставится фокус на самую часто-кликуемую кнопку и цепляется событие нажатия на клавиатуру, т.е лево - 37, право - 39 и ентер - 13. Когда мы нажимаем одну из них, меняется фокус или запускается функция кнопки, в зависимости от кнопки над которой фокус.

И оно работает! Теперь осталось только написать то же самое тля окон "Конец игры" и "Уровень пройден" и самое сложное "Меню и галрея" - где 19 кнопок
Как думаете, можно упростить?


Последний раз редактировалось FieryWall; 04.05.2011 в 22:05.
Создать новую тему   Часовой пояс GMT +4, время: 02:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
enter , в пределах мувиклипа , желтый квадрат , меню , фокус

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

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


 


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


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