Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 ActionScript-是否应尽可能避免事件调度/侦听?_Actionscript 3_Events - Fatal编程技术网

Actionscript 3 ActionScript-是否应尽可能避免事件调度/侦听?

Actionscript 3 ActionScript-是否应尽可能避免事件调度/侦听?,actionscript-3,events,Actionscript 3,Events,,我遇到了一个问题,需要从列表的自定义单元格渲染器类访问列表对象 有两种选择: 侦听并分派自定义事件以在这两个类之间进行通信 使用父属性:List(parent.parent.parent)引用单元格渲染器类中的列表 虽然选择第二个选项要容易得多,但我觉得调度和侦听自定义事件将导致代码更符合AVM2的设计,提供更好的通信控制,并且正如AS3所预期的那样,在新手中调试或维护应该不那么困难 但是,我也觉得使用事件的成本更高,需要注意资源管理,这可能会使调试和维护变得更困难,而且通常可能会有些过分 这

,我遇到了一个问题,需要从列表的自定义单元格渲染器类访问列表对象

有两种选择:

  • 侦听并分派自定义事件以在这两个类之间进行通信
  • 使用父属性:List(parent.parent.parent)引用单元格渲染器类中的列表
  • 虽然选择第二个选项要容易得多,但我觉得调度和侦听自定义事件将导致代码更符合AVM2的设计,提供更好的通信控制,并且正如AS3所预期的那样,在新手中调试或维护应该不那么困难

    但是,我也觉得使用事件的成本更高,需要注意资源管理,这可能会使调试和维护变得更困难,而且通常可能会有些过分


    这仅仅是一个需要或品味的问题吗?如果可以的话,是否应该避免发送/侦听自定义事件?

    我将从另一个角度来看待它。如果另一个选项最终在两个类之间创建更多的依赖关系,我肯定会选择事件调度

    在这方面,我不知道为什么您认为事件驱动的应用程序更难调试和维护。这似乎是相反的,但这当然取决于如何在应用程序中实现事件分派。但是说了这些,重新阅读你的问题,我意识到你似乎自相矛盾!当然,我倾向于同意第一种说法

    ...offers greater control for communication and, as it's expected AS3, 
    should be less difficult to debug or maintain... 
    
    ...perhaps making it more difficult to debug and maintain and 
    could be generally overkill.
    

    不要忘记,单看代码看不到事件侦听器的控制流

    虽然我并不完全反对事件侦听器,但如果您使用它们,您应该尽可能以最自我记录和最简单的方式使用它们。如果您有一些聪明的东西,比如添加/删除事件监听器,但出现了错误,那么调试可能是一场噩梦,因为您看不到
    dispatchEvent
    将要做什么


    如果
    owner
    为您找到了正确的对象,那么我自己也会这样做。

    lol。是的,我意识到我在写这篇文章时提到了这两个选项。我认为事件可能更难调试/维护,因为它们需要资源管理,而不使用事件可能更难调试/维护,因为正如您所说,类之间会有更多的依赖关系。*虽然List(parent.parent.parent)可以工作,我最近意识到,访问父级只需使用自定义单元格呈现器类中的List(listData.owner)即可。