Ваш код выглядит нормально. Поскольку я не вижу полного источника, вот мои две мысли о том, что может происходить:
Вы уверены, что ваш addEventListener
звонок сделан перед отправкой события? Добавьте след, чтобы убедиться, что application1_initializeHandler
печатает раньше, чем functionOne
.
Ваш functionOne
вызов находится в другом компоненте, отличном от вашего основного приложения? Если это так, вам нужно установить атрибут bubbles
вашего пользовательского события в значение true в супер-вызове вашего события.
public function LanguageEvent(type:String,languageid:String,bubbles:Boolean=True)
{
super(type, bubbles);
this.langid = languageid;
trace("LanguageEvent: " + this.langid);
}
См. Документы flash.events.Event
для вызова конструктора. Кроме того, вот цитата об аргументе bubbles
, объясненном здесь :
Свойство пузырей
Говорят, что событие вспыхивает, если его
объект события участвует в
пузырящаяся фаза потока событий,
Это означает, что объект события
передается от целевого узла обратно
через своих предков, пока не достигнет
Уровень. Свойство Event.bubbles
хранит логическое значение, которое указывает
участвует ли объект события
в пузырчатой фазе. Потому что все
события, которые пузыри также участвуют в
фазы захвата и цели, любые
событие, которое пузырьки участвует во всех
три этапа потока событий. Если
Значение true, объект события
участвует во всех трех этапах. Если
значение false, объект события
не участвует в барботировании
фазы.
Исходя из вашего исходного кода, похоже, что вы видели «Диспетчеризацию пользовательских событий» в гибких документах, но я буду ссылаться на них в любом случае для дальнейшего / простого ознакомления: http://livedocs.adobe.com/flex/3/html/help.html?content=createevents_3.html.
Кроме того, обратитесь к http://www.adnandoric.com/2008/12/29/understanding-the-flex-event-propagation/ за кратким обзором системы распространения событий, чтобы попытаться лучше понять, что происходит во время разработки.
Edit:
Исходя из ваших комментариев, я предполагаю, что ваш functionOne
вызов находится в отдельном классе, и у вашего "основного" приложения есть экземпляр этого класса. Если это так, вы захотите присоединить ваш прослушиватель событий к этому экземпляру и делегировать его функции application1_LanguageSelectionHandler
вашего основного ... Вот так:
protected function application1_initializeHandler(event:FlexEvent):void
{
this.theInstanceThatHoldsYourFunctionOne.addEventListener(LanguageEvent.LANGUAGE_SELECTED,
application1_LanguageSelectionHandler);
}