Flex - 为什么我的自定义事件没有在以下事件监听器中注册?

时间:2010-04-20 14:01:31

标签: flex events listener

printableInvoice.addEventListener(batchGenerated,printableInvoice_batchGeneratedHandler);

导致此错误: 1120:访问未定义的属性batchGenerated。我已经尝试过FlexEvent.batchGenerated和FlashEvent.batchGenerated。

在组件printableInvoice中调度偶数的MetaData和函数是可以的。我将printableInvoice实例化为mxml组件而不是通过action-script它将标签放入mxml行:batchGenerated =“someFunction()”

感谢。

2 个答案:

答案 0 :(得分:2)

batchGenerated应该是一个字符串。

答案 1 :(得分: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阶段有效地定位和处理事件。