在FLEX应用程序中,我正在尝试"重新发送"自定义事件.即component1执行dispatchEvnet(event),component2注册事件的处理程序,处理程序的唯一功能是dispatch(event).最后,component3侦听来自component2的事件.我想要做的是类似于"重新抛出"异常的概念(和类似的原因).不同之处在于重新分派似乎在AS3(Flash 10)中不起作用.在IE中,没有任何反应,在FF3中有一个例外,说在调用component3中的处理程序时尝试将Event类型强制转换为我的CustomEvent时类型转换失败.调试器中的跟踪代码显示,在调用component3时,事件确实是一般事件,我的所有自定义内容都丢失了.应该是这样吗?
您遇到的问题是由于未覆盖自定义事件中的clone()事件.
重新调度事件时,会克隆和修改事件.如果你不覆盖clone(),你将得到clone()的基本实现,它返回一个Event.由于无法将Event强制转换为自定义事件类型,因此会引发运行时错误.
从文档:
创建自己的自定义Event类时,必须覆盖继承的Event.clone()方法,以便它复制自定义类的属性.如果未设置在事件子类中添加的所有属性,则当侦听器处理redispatched事件时,这些属性将没有正确的值.