我在flex 3.5中创建了一个自定义事件。但是处理程序没有被调用。如何解决这个问题或者调试这个问题的方法是什么?Flex事件处理程序不工作
Event类:
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);
}
}
在主应用程序类,事件监听:
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 2010-08-11 19:45:06
@Saneef:根据你的评论我已经更新了我的答案......看看它是否能为你解决。 – sdolan 2010-08-11 19:53:15
@sdolan它的工作。 :) 谢谢!现在,即使将事件侦听器添加到主应用程序(就像我之前所做的那样),我仍然怀疑,在事件传播(如adnandoric.com中显示的事件传播)中不会调用它吗? – Saneef 2010-08-11 20:11:33