PDA

Просмотр полной версии : создать MyEvent


Pecher
08.12.2007, 06:10
Как создать собственное событие, чтобы к сообщению можно было прицепить дополнительные переменные?

В документации написано, надо переопределить clone():

class PingEvent extends Event {
var URL:String;

public override function clone():Event {
return new PingEvent(type, bubbles, cancelable, URL);
}
}

У меня такое не работает. Пишет, что у класса Event нет конструктора по умолчанию.

miramax
08.12.2007, 08:10
Вот пример кастомного события:

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, который не передаётся неявным конструктором.

Pecher
08.12.2007, 20:02
Большое спасибо за подробное разъяснение!
Правда это не мой код, а код из документации флэш :)
Я просто не знал, что есть конструкция super(type). Привык использовать super.func();
Конец :)