在ActionScript 3中,大多数事件使用捕捉/目标/泡模型,这是相当流行时下:

  

当一个事件发生时,其移动通过事件流的三个阶段:捕获阶段,其从显示列表层次结构,以刚好在目标节点之前的节点的顶部流动;目标相位,其包含所述目标节点;和冒泡阶段,从所述目标节点备份显示列表层次结构。之后的节点流动

然而,一些事件,如Sprite类的enterFrame事件,不捕获或泡沫 - 你必须直接订阅目标检测事件。该文档将这些作为“广播事件”。我想这是出于性能的考虑,因为这些活动会不断地为舞台上的每个精灵被触发,你不希望有应对一切多余的事件传播。

我要派遣我自己的广播事件。我知道你可以防止事件冒泡(Event.bubbles = false),但你能摆脱捕获的呢?

有帮助吗?

解决方案

和气泡捕捉阶段都是整个起泡机构的零件。如果bubbles设置为false,两者都是不存在的。

其他提示

这back2dos答案是的即可。实际上Event.bubbles属性不影响捕获相位。

public class CaptureTextInput extends Sprite
{
  function CaptureTextInput()
  {
    var t:TextField = new TextField();
    t.type = TextFieldType.INPUT;
    addEventListener(TextEvent.TEXT_INPUT, function(event:TextEvent):Void
    {
      trace("captured"); // This event will be triggered properly when you type in text field.
    }, true);
    addChild(t);
  }
}

如果你摆脱了泡沫阶段和捕捉阶段的,不使之成为广播事件。有什么特别的广播事件是,当一个人被分派,每一个听众是不管他们是打开或关闭显示列表,其中触发。如果有一种方法可以派遣自己的广播事件,我不知道它是什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top