Apache flex Flex-为什么我的自定义事件没有注册到以下事件侦听器?

Apache flex Flex-为什么我的自定义事件没有注册到以下事件侦听器?,apache-flex,events,listener,Apache Flex,Events,Listener,可打印发票。addEventListener(批生成,可打印发票_batchGeneratedHandler) 导致此错误的原因: 1120:已生成对未定义属性的访问。我已将其作为FlexEvent.batchGenerated和FlashEvent.batchGenerated进行了尝试 在组件printableInvoice中发送偶数的元数据和函数没有问题。如果我将printableInvoice实例化为一个mxml组件,而不是通过操作脚本,那么就可以在mxml行中添加一个标记:batchG

可打印发票。addEventListener(批生成,可打印发票_batchGeneratedHandler)

导致此错误的原因: 1120:已生成对未定义属性的访问。我已将其作为FlexEvent.batchGenerated和FlashEvent.batchGenerated进行了尝试

在组件printableInvoice中发送偶数的元数据和函数没有问题。如果我将printableInvoice实例化为一个mxml组件,而不是通过操作脚本,那么就可以在mxml行中添加一个标记:batchGenerated=“someFunction()”


谢谢

batchGenerated应该是一个字符串。

每当生成批时,应用程序都会调度一个事件

我假设您的代码中包含以下内容:

dispatchEvent( new BatchEvent("batchGenerated") );

第二种方法通常是首选的,因为使用变量而不是神奇的字符串可以为您提供额外级别的编译时检查

事件的第一个必需参数通常是事件的类型-event.CHANGE(又名“CHANGE”)、FlexEvent.VALUE_COMMIT(又名“valueCommit”)等

这就是事件侦听器实际比较的对象

因此,在上面的事件侦听器代码中,您希望将行更改为:

printableInvoice.addEventListener("batchGenerated", printableInvoice_batchGeneratedHandler);
或者希望

printableInvoice.addEventListener(BatchEvent.BATCH_GENERATED, printableInvoice_batchGeneratedHandler);
如果您想更进一步,Flex文档将详细介绍如何通过使用捕获、目标和气泡阶段有效地定位和处理事件。

mxml中的batchGenerated=“foo()”是Flex编译器的魔术。在AS文件中时,需要使用事件的字符串表示形式。
printableInvoice.addEventListener(BatchEvent.BATCH_GENERATED, printableInvoice_batchGeneratedHandler);