【问题标题】:Flex Events flow in non hierarchy e.g via framework responderFlex 事件在非层次结构中流动,例如通过框架响应者
【发布时间】:2011-08-13 18:51:16
【问题描述】:

假设一个应用程序有面板,而面板有按钮和 textField 或 textArea。我们点击一​​个按钮来点击一个服务,比如通过 cairngorm 框架。

事件生命周期遵循显示层次结构中的捕获-目标-气泡循环,例如按钮上的 MouseClick 事件将调用附加到按钮和/或面板和/或应用程序和/或阶段的侦听器的处理程序,因为流程移动在这个方向。

非层次结构上的事件如何工作,例如,服务的结果会触发自定义事件 DataRecieved。我们为此 dataRecieved 事件的面板/按钮附加了一个侦听器。此侦听器如何获取信息?事件生命周期是如何出现在这张图中的?

谁能解释一下?

谢谢!

【问题讨论】:

  • 您能给我们举例说明您希望完成的工作吗?仅供参考 event.target 会让您知道哪个对象调度了原始事件(例如您的 service 对象)

标签: apache-flex actionscript-3 events flex4


【解决方案1】:

由于它是一个非显示对象,因此事件只有一个目标阶段。这意味着只有附加到与事件的target 属性中的对象相同的对象的侦听器才能工作。因此,非 DisplayObject 只能将事件分派给它们自己。至少我是这么理解的。

answer to a related question 中有一些关于编写自定义 EventDispatcher 的讨论,这将使非 DisplayObject 的冒泡。

【讨论】:

    【解决方案2】:

    如果您通过 dispatchEvent 在 Flex UIComponent 上调度自定义事件,只要 Event 对象中的 bubbles 标志为 true,UIComponent 就会负责通过显示层次结构冒泡事件。

    【讨论】:

      【解决方案3】:

      我发现了 GlobalEventDispatcher 的概念,我们可以将侦听器附加到该概念并从中进行调度。

      另一个问题的参考很有帮助 - Flex Custom Event dispatching 重要的一点是 - 调度程序的实例必须相同。我们可以为我们的应用程序保留一个自定义全局单例事件调度程序,或者我们可以将 stage/systemManager/FexGlobals.toplevelapplicon 用于可能不是一个好的实践的目的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        相关资源
        最近更新 更多