2010-04-20 55 views
1

printableInvoice.addEventListener(batchGenerated,printableInvoice_batchGeneratedHandler);Flex - 爲什麼我的自定義事件未被註冊到以下事件偵聽器?

此錯誤的結果: 1120:訪問未定義的屬性batchGenerated。我已經嘗試了FlexEvent.batchGenerated和FlashEvent.batchGenerated。

調度組件printtableInvoice中的MetaData和函數是可以的。它將printableInvoice實例化爲一個mxml組件,而不是通過action-script將它放到mxml行中:batchGenerated =「someFunction()」

謝謝。

回答

2

batchGenerated應該是一個字符串。

+1

batchGenerated =「foo()」在mxml中是flex的編譯器魔術。當你在一個AS文件中時,你需要使用事件的字符串表示。 – sharvey 2010-04-23 15:00:58

0

看起來您的應用程序每次生成批處理都會分派一個事件。

我假設你的代碼中你有沿任線的東西:

dispatchEvent(new BatchEvent("batchGenerated")); 

dispatchEvent(new BatchEvent(BatchEvent.BATCH_GENERATED)); 

第二種方式通常是優選的,因爲使用的不是魔術字符串變量給你額外的編譯時間檢查。

事件的第一所需參數通常是事件的類型 - Event.CHANGE(又名「變」),FlexEvent.VALUE_COMMIT(又名「valueCommit」)等

這是事件監聽器是什麼實際上進行比較。

因此,在上述事件偵聽器的代碼,你想改線是兩種:

printableInvoice.addEventListener("batchGenerated", printableInvoice_batchGeneratedHandler); 

或希望

printableInvoice.addEventListener(BatchEvent.BATCH_GENERATED, printableInvoice_batchGeneratedHandler); 

如果你想走得更遠,Flex文檔進到how the event system works的一些細節,以及如何通過使用Capture,Target和Bubble階段有效地定位和處理事件。