【问题标题】:as3 stop event propagationas3 停止事件传播
【发布时间】:2014-03-28 09:19:30
【问题描述】:

当我在事件侦听器中添加新的事件侦听器时,我无法让事件停止在 as3 中传播。当我不想调用我的第二个事件监听器时。

this.addEventListener(MouseEvent.CLICK, firstlistener);

function firstlistener(e:Event)
{
    //do stuff
    e.stopImmediatePropagation();
    this.addEventListener(MouseEvent.CLICK, secondlistener);
}

【问题讨论】:

  • 如果此代码是您的真实代码,则存在语法错误:它不是 e.stopImidiatePropagation();但是 e.stopImediatePropagation();
  • 不是我的真实代码,只是一个错字
  • 其实你们都有错别字。它是 stopImmediatePropagation() ...注意两个 m

标签: flash actionscript-3


【解决方案1】:

您可以同时添加firstListenersecondListener,但将第一个的优先级设置为更高。这样它就可以有条件地停止传播到第二个。

this.addEventListener(MouseEvent.CLICK, firstlistener, false, 100);
this.addEventListener(MouseEvent.CLICK, secondlistener);

function firstlistener(e:Event)
{
    if (...condition...) {
        e.stopImmediatePropagation();
    }
}

但如果您可以控制两个听众,那么最好有条件地从第一个调用第二个或广播第二个,不同的。比使用stopImmediatePropagation 干净一点。

【讨论】:

    【解决方案2】:

    由于这是一个 MouseEvent,请尝试传递:

    e:MouseEvent

    作为处理程序的参数而不是:

    e:事件

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2012-10-10
      • 2011-04-06
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2014-03-10
      • 1970-01-01
      相关资源
      最近更新 更多