【问题标题】:Proper way to add event listeners to things that don't have it as a native method将事件侦听器添加到没有作为本机方法的事物的正确方法
【发布时间】:2011-04-05 00:54:12
【问题描述】:

我有一个当前没有扩展任何东西的自定义类(它用于在数据库上执行特定类型的查询),但我需要它来向其父类发送事件。 addEventListener 并没有在其中定义。

我注意到很多主要的 Flash 类都扩展了 EventDispatcher,那么如果没有其他选择,我应该这样做吗?是否有任何必须与其他类通信的类扩展 EventDispatcher?

【问题讨论】:

    标签: actionscript-3 events event-dispatching


    【解决方案1】:

    你可以做一些事情,你绝对不限于使用事件。事件很好,因为它解耦了代码,并允许许多对象对单个事件采取行动,而不需要分派事件的对象关心谁在听,或者他们在做什么。如果您想分派事件,请扩展 EventDispatcher,或将其作为对象的属性。 (如果您已经在扩展另一个类,有时您可能需要将其定义为属性。)

    或者,您的对象可以维护对另一个对象的引用,并在其上显式调用方法。在这种情况下,您不需要扩展 EventDispatcher,但您必须存储对要与之通信的所有其他对象的引用。

    两种解决方案都实现了相同的最终结果,这取决于情况和/或偏好。

    希望对你有帮助。

    【讨论】:

    • 还可以查看 AS3 Signals,它允许您在非 EventDispatcher 类上使用事件。它使用相同的语法,并具有更有用和更快的优点:github.com/robertpenner/as3-signals
    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 2020-06-29
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2020-10-31
    相关资源
    最近更新 更多