Базовый класс с ключевым словом metadata [Bindable] автоматически расширяет EventDispatcher? - PullRequest
2 голосов
/ 29 сентября 2011

Я сталкиваюсь с чем-то немного странным, но, может быть, кто-то еще сталкивался с этим раньше.

У меня есть базовый класс, который ничего не расширяет.Давайте назовем это ...

public class FooBar {
    //...
}

Но я хочу связать КАЖДОЕ одно из его открытых свойств:

[Bindable] public class FooBar {
    public var propertyOne:String;
    public var propertyTwo:String;
}

Во время отладки / профилирования класса я замечаю, что каждыйесли свойство изменено - экземпляр FooBar вызывает для него « .dispatchEvent () ».Но мой класс не расширяется EventDispatcher .

Что дает?

Означает ли это, что во время компиляции мой класс автоматически расширяется EventDispatcher иликакой-то другой класс с возможностью отправки событий?Как я мог прослушать PropertyChangeEvent , если в моем классе не объявлен метод " addEventListener "?

1 Ответ

3 голосов
/ 29 сентября 2011

Когда вы используете метаданные [Bindable], компилятор Flex генерирует для вас много кода. Если вы хотите точно знать, что происходит, посмотрите ответы на Что делает тег Flex [Bindable]? и ссылки, которые там размещены.

Чтобы ответить на ваш вопрос: Нет, ваш класс не продлевается EventDispatcher. Однако компилятор изменяет ваш класс, чтобы он реализовал интерфейс IEventDispatcher. Сгенерированная реализация этого интерфейса использует экземпляр EventDispatcher.

...