Просмотр полной версии : создать MyEvent
Как создать собственное событие, чтобы к сообщению можно было прицепить дополнительные переменные?
В документации написано, надо переопределить clone():
class PingEvent extends Event {
var URL:String;
public override function clone():Event {
return new PingEvent(type, bubbles, cancelable, URL);
}
}
У меня такое не работает. Пишет, что у класса Event нет конструктора по умолчанию.
Вот пример кастомного события:
public class PingEvent extends Event {
public var URL:String;
public function PingEvent(type:String, URL:String)
{
super(type);
this.URL = URL
}
public override function clone():Event {
return new PingEvent(type, URL);
}
}
А clone() нужно переопределять - для того что бы возвращать дубликат уже отловленого события.
Например послали DataEvent, приняли в хендлере и что бы дальше его же переслать нужно его клонировать. Т.к. к созданному событию можно применить метод EventDispatcher.dispatchEvent() только 1 раз.
Ошибка в твоём коде происходит потому, что ты не указал явно конструктора PingEvent. Это значит что будет юзаться неявный способ. Неявный конструктор пытается вызвать конструктор супер класса Event. Но, в конструкторе new Event() есть обязательный параметр type:String, который не передаётся неявным конструктором.
Большое спасибо за подробное разъяснение!
Правда это не мой код, а код из документации флэш :)
Я просто не знал, что есть конструкция super(type). Привык использовать super.func();
Конец :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.