Любой внутренний способ объявить диспетчеризируемые события в классе так, чтобы список их был доступен извне? - PullRequest
1 голос
/ 04 июля 2011

Я хотел бы объявить в своем классе набор событий, которые отправляются им, а затем использовать эту информацию из класса контроллера для автоматизации добавления прослушивателей событий. Существует ли языковая структура для этого в Action Script 3? И что вы можете подумать о таком подходе - хорошо, плохо?

1 Ответ

5 голосов
/ 04 июля 2011

Вы можете использовать метатег [Event] для своего класса вместе с describeType() методом.

package
{
    import flash.display.Sprite;
    import flash.utils.describeType;

    [Event(name="test",type="TestEvent")]
    public class Test extends Sprite
    {
        public function Test()
        {
            var description:XML = describeType(this);
            var meta:XMLList = description.descendants("metadata");
            var events:XMLList = meta.(attribute("name") == "Event");
            trace(events.toXMLString());
            /*
            trace output:
            <metadata name="Event">
                <arg key="name" value="test"/>
                <arg key="type" value="TestEvent"/>
            </metadata>            
            */
        }
    }
}

метатеги: http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html#159710

descriptionType (): http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#describeType%28%29

Кстати, если вы объявите свои собственные события таким образом, вы также получите соответствующие подсказки кода во Flash Builder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...