【问题标题】:EXIT_FRAME bubbles up?EXIT_FRAME 冒泡?
【发布时间】:2010-11-04 22:25:31
【问题描述】:

根据 Flash 文档:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/Event.html#

Event.EXIT_FRAME 常量定义 类型属性的值 exitFrame 事件对象。

注意:本次活动没有 “捕获阶段”也不是“泡沫阶段”, 这意味着事件监听器必须 直接添加到任何潜在的 目标,目标是否在 是否显示列表。

但是,当在子 DisplayObject 上调用 gotoAndStop 时,会在其容器上引发 EXIT_FRAME 事件,并且似乎无法停止它。

例如:

        private function init(e:Event = null):void 
  {
   removeEventListener(Event.ADDED_TO_STAGE, init);
   // entry point
   c = new Circle2();
   addChild(c);

   this.addEventListener(Event.ENTER_FRAME, enterFrame);
   this.addEventListener(Event.EXIT_FRAME, exitFrame);
  }

  private function enterFrame(e:Event):void
  {
   trace("enter frame");
   c.setPercent(5); // this calls gotoAndStop()
  }

  private function exitFrame(e:Event):void
  {
   trace("exit frame");
  }

输出是:

进入框架

退出框架

退出框架

在 Circle2 构造函数中我已经尝试过了

this.addEventListener( Event.EXIT_FRAME, function(e:Event):void
{
 e.stopPropagation();
});

【问题讨论】:

  • 我在 AS3 - Flash CC Pro 中也有同样的行为。我正在尝试在事件处理程序中检测这种情况,以便在运行实际代码之前停止执行...

标签: flash actionscript-3 events flex4


【解决方案1】:

你可以尝试使用capture phase,然后调用stopPropagation。

this.addEventListener( Event.EXIT_FRAME, function(e:Event):void
{
    e.stopPropagation();
}, true);

注意 addEventListener 末尾的 true

【讨论】:

  • 感谢您的回答,但很遗憾没有任何影响。
  • @ChrisPorter 你有没有找到解释?我正在尝试完全相同的情况;几个 EXIT_FRAME 没有其对应的 ENTER_FRAME。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 2011-02-13
  • 2013-10-09
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 2011-10-20
  • 2014-03-26
相关资源
最近更新 更多