在 FLEX 应用程序中,我试图“重新调度”自定义事件。 IE。组件1执行dispatchEvnet(event),组件2注册该事件的处理程序,该处理程序的唯一功能再次是dispatch(event)。最后,组件 3 监听来自组件 2 的事件。我想做的类似于“重新抛出”异常的概念(并且出于类似的原因)。不同之处在于,重新调度在 AS3 (Flash 10) 中似乎不起作用。在 IE 中,没有任何反应,在 FF3 中,出现异常,表示在调用 component3 中的处理程序时尝试将事件类型强制为我的 CustomEvent 时,类型转换失败。跟踪调试器中的代码表明,当调用 component3 时,该事件确实是一个通用事件,我的所有自定义内容都丢失了。应该是这样吗?
您遇到的问题是由于没有覆盖clone()您的自定义事件中的事件。
当事件被重新分派时,它们被克隆和修改。如果您不重写clone(),您将获得clone() 的基本实现,它返回一个Event。由于事件无法转换为自定义事件类型,因此会引发运行时错误。
从文档中:
创建您自己的自定义 Event 类时,您必须重写继承的 Event.clone() 方法,以便它复制自定义类的属性。如果您没有设置在事件子类中添加的所有属性,则当侦听器处理重新分派的事件时,这些属性将不会具有正确的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)