当前位置:  开发笔记 > 编程语言 > 正文

Flex AS3 - 将事件发送到ItemRenderer的所有实例

如何解决《FlexAS3-将事件发送到ItemRenderer的所有实例》经验,为你挑选了1个好方法。

我有一个使用自定义ItemRenderer的List.是否有一种方法让所有者(List)将我创建的自定义事件分派给它的所有ItemRenderer实例?

例如,我想调度一个事件,该事件将文本添加到项呈示器中的文本框中.一个或多个项呈示器将能够响应此事件,具体取决于某些用户交互.

有办法吗?

谢谢 :)



1> Simon..:

如果您的自定义ItemRenderer实例可以以某种方式访问​​List实例,那么它就是直接前进 - 只需注册您的事件处理方法:

theList.addEventListener(YourCustomEvent.CUSTOM_EVENT, itemRendererCustomHander);

如果您没有直接访问权限(我假设),您仍然可以间接访问,例如通过ItemRenderer的类对象的委托.使EventDispatcher的子类的实例成为ItemRenderer类的静态属性,并在ItemRenderer构造函数中,使用它注册事件处理程序:

public class ItemRenderer {
    public static var eventDelegate:YourCustomEventDispatcher;

    public function ItemRenderer() {
        eventDelegate.addEventListener(YourCustomEvent.CUSTOM_EVENT, itemRendererCustomHander);
        (...)
    }

    public function itemRendererCustomHander(event:YourCustomEvent) {
        (...)
    }
}

现在,当您创建List(在ActionScript中或在MXML组件的initialize事件处理程序中)时,创建一个新的YourCustomEventDispatcher,为其提供对List的引用,并将其添加到ItemRenderer.YourCustomEventDispatcher使用List为YourCustomEvent注册一个私有事件处理程序,并只重新调整它.由于所有ItemRenderer实例都使用YourCustomEventDispatcher注册了YourCustomEvent,因此列表的YourCustomEvent通过一跳到达所有ItemRenderer.

这基本上是Observer设计模式的实现.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有