Я создал пользовательское событие в flex 3.5. Но обработчик не вызывается. Как решить эту проблему или как ее отладить?Обработчик события Flex не работает
Класс события:
package com.saneef.worldlanguages.events
{
import flash.events.Event;
public class LanguageEvent extends Event
{
public static const LANGUAGE_SELECTED:String = "LanguageSelected";
public function LanguageEvent(type:String,languageid:String)
{
super(type);
this.langid = languageid;
trace("LanguageEvent: " + this.langid);
}
public var langid:String;
override public function clone():Event {
return new LanguageEvent(type, langid);
}
}
}
Диспетчерская:
private function functionOne():void
{
try{
dispatchEvent(new LanguageEvent(LanguageEvent.LANGUAGE_SELECTED,"STR"));
}
catch(e:Error)
{
trace(e.message);
}
}
В главном классе приложения, EventListener:
protected function application1_initializeHandler(event:FlexEvent):void
{
this.addEventListener(LanguageEvent.LANGUAGE_SELECTED,
application1_LanguageSelectionHandler);
}
Функция обработчика событий:
public function application1_LanguageSelectionHandler(event:LanguageEvent):void
{
trace("application1_LanguageSelectionHandler: " + event.langid);
populate_countrya3id_languages(event.langid);
}
«addEventListener» для события выполняется перед отправкой. Я проверил со следами. Поскольку вы сомневаетесь, что «functionOne» находится в другом классе, отличном от основного приложения. Я добавил «bubbles = true» в конструкторе суперкласса, как вы предложили. Но все же он не работает. Я просмотрю ссылки, которые вы предоставили, и попробуйте отладить больше. :) – Saneef
@Saneef: Основываясь на вашем комментарии, я обновил свой ответ ... проверьте его и посмотрите, разрешит ли он его вам. – sdolan
@sdolan Это сработало. :) Спасибо! Теперь у меня есть сомнения, даже если я добавлю прослушиватель событий к основному приложению (например, я сделал это раньше), не будет ли это вызвано во время распространения события, как показано на adnandoric.com? – Saneef