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

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

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
По умолчанию Получить известие о событии в наследнике класса, извещающего это событие

Здравствуйте. Мне нужно расширить класс Timer для того чтобы добавить туда некую фишку, забытую разработчиками. Т.е. я пишу:
Код:
public class VTimer extends Timer {
   public function VTimer(delay:Number, repeatCount:int = 0):void {
      super(delay, repeatCount);
   }
}
В другом классе пишу:
Код:
t = new VTimer(1000);
t.addEventListener(TimerEvent.TIMER, test, false, 0, true);
t.start();
Как мне в этом наследнике узнать, что произошло событие TIMER?

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

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Мне нужно расширить класс Timer для того чтобы добавить туда некую фишку, забытую разработчиками.
Интересно, что могли забыть разработчики?

Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Как мне в этом наследнике узнать, что произошло событие TIMER?
Подписаться на событие.

Старый 01.11.2008, 12:04
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 3  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Цитата:
Интересно, что могли забыть разработчики?
Нет элементарной паузы.
Цитата:
Подписаться на событие.
Я так и делал, но мне это кажется неправильным - получается у меня 2 раза подписан этот объект на одинаковое событие. Вот у экземпляра класса Timer есть же метод dispatchEvent, если бы я мог до него добраться... Пробовал переопределить его, но компилятор ругается:
Цитата:
Incompatible override.

Старый 01.11.2008, 12:45
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
получается у меня 2 раза подписан этот объект на одинаковое событие.
Цитата:
Как мне в этом наследнике узнать, что произошло событие TIMER?
Хочу, чтобы яблоко было зеленое, но обязательно красного цвета.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.11.2008, 12:56
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 5  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Не понял...(
Вот глядите - в главном классе я подписался:
Код:
t.addEventListener(TimerEvent.TIMER, test);
Соответственно каждый раз при наступлении TimerEvent.TIMER происходит dispatchEvent. Зачем же мне в классе-наследнике еще раз подписываться на событие TimerEvent.TIMER? Ведь этот наследник же рассылает его, соответственно мне всего лишь надо его перехватить.

upd.:
Код:
override public function dispatchEvent(e:Event):Boolean {
	Debugger.trace("Hi!");
	return super.dispatchEvent(e);
}
Срабатывает только при TimerEvent.TIMER_COMPLETE.

Старый 01.11.2008, 13:01
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
И как ты представляешь себе этот перехват? В виде функции, которая сама по себе вызывается? С какой стати?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.11.2008, 13:25
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 7  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Почему сама по себе? EventDispatcher ее вызовет (ну или что-то другое). Ведь события TIMER, TIMER_COMPLETE кто-то вызывает - не сами они. В приведенном же примере перехватывается...

Старый 01.11.2008, 13:39
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
А откуда EventDispatcher знает, что вызывать, если ты не хочешь подписываться внутри субкласса?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.11.2008, 13:46
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 9  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
EventDispatcher же знает, что я экземпляр этого субкласса подписал - т.е. он как то посылает сигнал моему экземпляру на то, чтобы тот выполнил dispatchEvent. И раз он посылает этот сигнал в мой класс, значит я могу этот сигнал перехватить, ну или переопределить этот самый dispatchEvent.

Старый 01.11.2008, 14:07
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Оне не посылает ничего в твой класс, так как EventDispatcher уже входит твой класс.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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