我在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