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

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

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

Регистрация: Feb 2013
Адрес: Не от мира сего.
Сообщений: 5
Post Как отписаться от события в AS2

У меня есть ролик с меню на флэше, находящемся на главном таймлайне, определённые кадры отображают различные меню, в которых мне нужно по нажатию (одной и той же) кнопки на клавиатуре совершать различные события, и отсылать команды уже во внешний источник. Проблема такая:
- я использую вот этот код для захвата нажатия клавиши и отправки команды вовне:
Код:
var KeyboardInput1:Object = new Object();
		Key.addListener(KeyboardInput1);
		KeyboardInput1.onKeyDown = function()
		{
			var KeyPressed1:Number = Key.getCode();
			if (KeyPressed1 == 13)
			{
				fscommand("PressEnter");
				gotoAndPlay("main");
			}
пробую использовать его по проверке "if (_root._currentframe == номеркадра){}" - но после перехода в другой кадр функция при нажатии кнопки на клавиатуре всё равно исполняется, тогда добавляю "removeEventListener(KeyboardInput1);" чтобы заглушить проверку - всё равно ничего не получается, в теории я понимаю что это всё нужно засунуть под addEventListener со скорее всего условием на нажатие клавиши, а потом его заглушить с помощью "removeEventListener(...);" в следующем кадре? но тогда на что вязать этот Listener, на _root? как вообще по-человечески сделать чтобы нужные мне кнопки считывались и совершали действия только в определённом кадре, а в остальных кадрах я мог привязать на них другие действия?

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

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Осн временная диаграмма:

var FLAG

В кадрах пишете
FLAG = 1
FLAG = 2 и т.д.

При нажатии кливиши проверяете состояние флага...

Код AS1/AS2:
if (KeyPressed1 == 13)
{
     if ( FLAG == 1 ) То делаем то-то
     if ( FLAG == 2 ) Иное действие
     //и так далее
}
А отписка-переподписка в данном случае - из пушки по воробьям.
Ну и приментиельно к коду в кадрах - это вообще все крайне плохо работать будет.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 18.02.2013, 10:16
PoisonMaster вне форума Посмотреть профиль Отправить личное сообщение для PoisonMaster Найти все сообщения от PoisonMaster
  № 3  
Ответить с цитированием
PoisonMaster

Регистрация: Feb 2013
Адрес: Не от мира сего.
Сообщений: 5
Ухх.. Спасибо! мне нравится! да и код оптимально оптимизирован получается. Спасибо большое!

Только всё же, для общего развития, подскажите, как правильно заглушить ИвентЛистенер подобный при случае с проверкой клавиш, чтоб в памяти не болтался?

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Код AS1/AS2:
Key.removeListener(KeyboardInput1);
Если не ошибаюсь.
__________________
hauts.ru

Старый 18.02.2013, 11:36
PoisonMaster вне форума Посмотреть профиль Отправить личное сообщение для PoisonMaster Найти все сообщения от PoisonMaster
  № 5  
Ответить с цитированием
PoisonMaster

Регистрация: Feb 2013
Адрес: Не от мира сего.
Сообщений: 5
Благодарю! по ошибке использовал "removeEventListener(KeyboardInput1);"

Старый 18.02.2013, 12:00
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 6  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
В подобных случаях очень помогает простой поиск, хотя, конечно, это несколько более самостоятельное действие, чем переспросить на форуме
__________________
hauts.ru

Старый 18.02.2013, 12:14
PoisonMaster вне форума Посмотреть профиль Отправить личное сообщение для PoisonMaster Найти все сообщения от PoisonMaster
  № 7  
Ответить с цитированием
PoisonMaster

Регистрация: Feb 2013
Адрес: Не от мира сего.
Сообщений: 5
Гуглил, "яндексил", скачал и прочёл раздел в книге по удалению операторов из памяти, но как раз там и нашел "removeEventListener()", который в данном случае был не тем что нужно, а в вопросах когда нужно решить проблему, и скорее разобраться что не работает, немаловажна помощь именно опытного человека, так что, в конце концов для чего нужны форумы, именно для передачи опыта, знаний, информации, и помощи когда она требуется.
=)

Старый 18.02.2013, 12:48
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от PoisonMaster Посмотреть сообщение
Гуглил, "яндексил", скачал и прочёл раздел в книге по удалению операторов из памяти
Важно не забывать про хелп. Это первичный источник для помощи. Держите его под рукой и активно используйте, когда есть потребность найти подходящий метод у нужного класса.
Key.removeListener method
__________________
Идите первым!

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

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

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


 


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


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