0

Flex 4 中是否有一种方法可以设计一个皮肤,以便它可以侦听由我的主应用程序调度的事件,在这种情况下,它是<s:WindowedApplication>该类的一个实例?

我尝试contentGroup在皮肤中添加一个事件侦听器,只是为了好玩。毫不奇怪,它没有奏效。

有任何想法吗?

感谢您的时间。

4

1 回答 1

4

您想为哪个组件设计皮肤?

如果你正在为 WindowedApplication 设计一个皮肤并且想要监听从你的 WindowedApplication 类触发的事件;好的。您可以使用皮肤中的 hostComponent 变量来侦听 WindowedApplication 实例上的所述事件。

我相信 hostComponent 属性是根据皮肤元数据自动创建的;除非您正在创建移动皮肤,否则文档会告诉您手动创建它。概念上是这样的:

public var hostComponent : WindowedApplication;

在代码中的某个未来点:

hostComponent.addEventListener('myCustomEvent',myEventListener);

我不知道在 Flex 组件生命周期中的哪一点设置了 hostComponent 属性。我确定您可以在 creationComplete 事件期间添加没有问题的事件侦听器;但也可能在生命周期的早期。

如果这不是您想要做的,您可以通过引用 FlexGlobals.topLevelApplication 变量在代码中的任何位置(包括皮肤类)侦听主应用程序上的事件:

var tla : WindowedApplication = FlexGlobals.topLevelApplication as WindowedApplication;
tla.addEventListener('myCustomEvent',myEventListener);

这被认为是封装的中断,我不确定我是否会推荐它。事件应该用来向上沟通;但是执行方法和属性应该用于向下通信。在这种情况下,您正在使用事件进行通信。

让皮肤类监听 hostComponent 上的事件有点像横向工作——而不是向上或向下工作。我对此也有复杂的感觉。

于 2012-04-26T02:35:46.870 回答