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

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

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

Регистрация: Sep 2011
Сообщений: 17
По умолчанию Получение пользовательского события.

Добрый день, не могу никак сделать такую ситуацию:
Есть пользовательский класс-наследник EventDispatcher, есть класс Dispatcher, в котором создается экземпляр наследника EventDispatcher, а затем диспетчеризуется событие, и есть класс Reciever, в котором регистрируется прослушка этого события. Но событие не приходит! Не могу понять что не так.

Класс-наследник EventDispatcher'а:
Код AS3:
import flash.events.EventDispatcher;
import flash.events.Event;
 
class EventAdvanced extends EventDispatcher {
	public static const MINUS:String = 'minus';
 
	public function goMinus():void {
		this.dispatchEvent(new Event(EventAdvanced.MINUS));
	}
}
Класс Dispatcher:
Код AS3:
import flash.display.Sprite;
 
public class Dispatcher extends Sprite{
 
	public var someDispatcher:EventAdvanced;
 
	public function Dispatcher() {
		someDispatcher = new EventAdvanced();
		var reciever:Reciever = new Reciever();
		someDispatcher.goMinus();
	}
}
Класс Reciever:
Код AS3:
import flash.events.Event;
import flash.display.Sprite;
 
public class Reciever extends Sprite{
 
	public function Reciever() {
		this.addEventListener(EventAdvanced.MINUS, tracer);
	}
 
	public function tracer(e:Event){
		trace('-1');
	}
}
Заранее спасибо за помощь

Старый 14.09.2011, 22:08
Genm вне форума Посмотреть профиль Отправить личное сообщение для Genm Найти все сообщения от Genm
  № 2  
Ответить с цитированием
Genm

Регистрация: Aug 2011
Сообщений: 24
Записей в блоге: 1
http://www.flasher.ru/forum/showthre...ght=usecapture
http://www.flasher.ru/forum/blog.php?b=85
Скидываю то, что сейчас в кладках браузера открыто по пользовательским событиям

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

Регистрация: Sep 2011
Сообщений: 17
Цитата:
Сообщение от Genm Посмотреть сообщение
По этой ссылке модифицированный EventDispatcher, и, вообщем, даже без пользовательского диспетчеризационного класса у меня не работает мой метод.

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

Регистрация: Mar 2007
Сообщений: 545
А что у вас слушает ресивер?
+ У вас нигде не сохраняется на него ссылка.

Судя по названию класс Dispatcher я бы предположил, что он диспатчит событие.

Старый 14.09.2011, 22:34
Luixoru вне форума Посмотреть профиль Отправить личное сообщение для Luixoru Найти все сообщения от Luixoru
  № 5  
Ответить с цитированием
Luixoru

Регистрация: Sep 2011
Сообщений: 17
Цитата:
Сообщение от andrew911 Посмотреть сообщение
+ У вас нигде не сохраняется на него ссылка.

Судя по названию класс Dispatcher я бы предположил, что он диспатчит событие.
Ссылка на что?
Прошу прощения за такие названия, Dispatcher лишь создает экземпляр диспетчера, который уже сам диспатчит.

Добавлено через 17 минут
Цитата:
Сообщение от andrew911 Посмотреть сообщение
Так и есть.
Я спросил не какое событие слушает ресивер, а что он слушает.
Слушатель может услышать событие, слушая объект, который, его испустил. (+ события могут всплывать по списку отображения).

http://help.adobe.com/ru_RU/as3/dev/...0204-7fca.html
Перечитал несколько раз, так и не понял "что он слушает".
А за вторую фразу спасибо, понял в чем была ошибка

Старый 14.09.2011, 22:24
Genm вне форума Посмотреть профиль Отправить личное сообщение для Genm Найти все сообщения от Genm
  № 6  
Ответить с цитированием
Genm

Регистрация: Aug 2011
Сообщений: 24
Записей в блоге: 1
Код AS3:
Broadcaster.addEventListener(EventAdvanced.MINUS, tracer)
Broadcaster.broadcastEvent(new CustomEvent(EventAdvanced.MINUS))
Должно же работать...

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

Регистрация: Sep 2011
Сообщений: 17
Ресивер слушает событие EventAdvanced.MINUS, вон у него в конструкторе стоит addEventListener.

Добавлено через 1 минуту
Цитата:
Сообщение от Genm Посмотреть сообщение
Код AS3:
Broadcaster.addEventListener(EventAdvanced.MINUS, tracer)
Broadcaster.broadcastEvent(new CustomEvent(EventAdvanced.MINUS))
Должно же работать...
Не очень бы хотелось импортировать чужой класс, лучше бы разобраться со своими ошибками.
Мне кажется ошибка в понимании, как работают события, но не знаю в чем.

Старый 14.09.2011, 22:34
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 8  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Цитата:
Сообщение от Luixoru Посмотреть сообщение
Ресивер слушает событие EventAdvanced.MINUS, вон у него в конструкторе стоит addEventListener.

Мне кажется ошибка в понимании, как работают события, но не знаю в чем.

Так и есть.
Я спросил не какое событие слушает ресивер, а что он слушает.
Слушатель может услышать событие, слушая объект, который, его испустил. (+ события могут всплывать по списку отображения).

http://help.adobe.com/ru_RU/as3/dev/...0204-7fca.html

Старый 14.09.2011, 23:38
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 9  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Вторая фраза это продолжение первой - какой объект он слушает, имелось в виду.

Ссылка на ресивер.
Вы его создаете, как локальную переменную и все.
Код AS3:
var reciever:Reciever = new Reciever();
При вызове сборщика мусора он исчезнет.


Последний раз редактировалось andrew911; 14.09.2011 в 23:44.
Старый 17.09.2011, 22:12
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 10  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Цитата:
Код AS3:
this.addEventListener(EventAdvanced.MINUS, tracer);
Так ресивер на себя слушателя вешает. А событие диспатчит экземпляр диспатчера. Тут ничего и не должно происходить... Или я чего-то не догоняю :-/

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

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

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


 


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


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