在Flex / Actionscript中,如何确保事件都沿着一个对象树传播,而不管目标是什么?

时间:2011-03-05 21:41:04

标签: flex events

我还在研究我的可缩放节点图项目。我目前遇到问题,我知道必须相对容易,但一直无法找到解决方案:

我有很多对象,其中许多都存储在其他对象中(并在物理空间中重叠)。当我放大一个物体时,它开始逐渐消失。在它开始淡入淡出的那一刻,我加载了子对象(或者如果一个子对象不存在则创建一个子对象)。我想关闭父对象响应大多数事件的能力。滚轮是一个例外,它需要同时发送到两个对象,以便父项可以在我进一步缩放时继续淡出。尽我所能,我找不到告诉Flex的方法“嘿,因为现在只将这些类型的事件发送给这个对象。“我要么最终尝试手动重定向事件而导致事件调度堆栈溢出,要么我得到的事件不是在正确的时间或正确的对象上激活。我该怎么办?

1 个答案:

答案 0 :(得分:0)

  

我想要关闭父对象   能够回应大多数事件。

您无法关闭对象响应事件的能力。

您可以编写代码来删除该对象中的所有事件侦听器;虽然我怀疑这将是一个手动过程。

您可以从显示列表中删除该对象,以使其事件侦听器不会触发其捕获或冒泡阶段中的事件。如果此对象具有您要显示的子项,则无法使用。

您可以在“子”对象在其自己的事件侦听器中调用stopPropogation()和/或stopImmediatePropogation()的地方工作。我相信这可能会阻止处理程序在父级中触发,但这可能取决于您的侦听器的设置方式。如果您正在使用捕获短语,我不相信这会产生影响。

您可以编写基本上说“”的“察觉”事件处理程序。

  

if(SomeConditionTrue){return; }

如果想法,我已经不多了。但是,我很确定没有办法普遍说“不要让这个组件响应事件”