gpt4 book ai didi

apache-flex - Flex AS3 - 向 ItemRenderer 的所有实例发送事件

转载 作者:行者123 更新时间:2023-12-04 03:15:29 25 4
gpt4 key购买 nike

我有一个使用自定义 ItemRenderer 的列表。所有者(列表)有没有办法将我创建的自定义事件分派(dispatch)给它的 ItemRenderer 的所有实例?

例如,我想调度一个将文本添加到项目渲染器中的文本框的事件。根据特定的用户交互,一个或多个项目渲染器将能够响应此事件。

有办法吗?

谢谢:)

最佳答案

如果您的自定义 ItemRenderer 实例以某种方式可以访问 List 实例,那么这很简单 - 只需注册您的事件处理方法:

theList.addEventListener(YourCustomEvent.CUSTOM_EVENT, itemRendererCustomHander);

如果您没有直接访问权限(我假设),您仍然可以间接访问,例如通过 ItemRenderer 的类对象的委托(delegate)。使 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) {
(...)
}
}

现在,当您创建 theList(在 ActionScript 中或在 MXML 组件的初始化事件处理程序中)时,创建一个新的 YourCustomEventDispatcher,为其提供对 theList 的引用,并将其添加到 ItemRenderer。 YourCustomEventDispatcher 使用 theList 为 YourCustomEvent 注册一个私有(private)事件处理程序,然后重新调度它。由于所有 ItemRenderer 实例都依次使用 YourCustomEventDispatcher 为 YourCustomEvent 注册,因此 theLists 的 YourCustomEvent 通过一跳到达所有 ItemRenderer。

这基本上是观察者设计模式的一种实现。

关于apache-flex - Flex AS3 - 向 ItemRenderer 的所有实例发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com