在FLEX应用程序中,我正在尝试“重新发送”一个自定义事件.即component1执行dispatchEvnet(event),component2注册事件处理程序,处理程序的唯一功能就是dispatch(event).最后,component3监听从component2发出的事件.我想要做的是类似于“重新抛出”异常的概念(和类似的原因).不同的是,在AS3(Flash 10)中重新发送似乎不起作用.在IE中,没有任何事情发生,在FF3中有一个例外说,在调用component3中的处理程序时,尝试强制将事件类型强制为我的CustomEvent时,类型转换失败.调试器中的跟踪代码显示,在调用component3的时候,事件确实是一个通用的事件,所有我的自定义内容丢失.这是应该是这样吗?
解决方法
您遇到的问题是由于不覆盖您的自定义事件中的
clone()事件.
当事件被重新分派时,它们被克隆和修改.如果不覆盖clone(),您将获得clone()的基本实现,该方法返回一个Event.由于无法将事件转换为自定义事件类型,因此会抛出运行时错误.
从文档:
When creating your own custom Event class,you must override the inherited Event.clone() method in order for it to duplicate the properties of your custom class. If you do not set all the properties that you add in your event subclass,those properties will not have the correct values when listeners handle the redispatched event.