flash - actionscript 3 冒泡可以用于自定义事件和对象层次结构吗?

标签 flash actionscript-3 actionscript

我在 Internet 上搜索过,但没有找到任何关于如何执行此操作的线索,知道吗?我不希望 flex 只有 flash(我的对象不是可视组件)。

最佳答案

事件冒泡实际上仅适用于 DisplayObject 层次结构,对于自定义事件,它仅以有限的方式起作用。

这样想:

显示对象有一个父对象(舞台除外)。如果你有一个 child 发送一个事件,那么它可能与包含它的任何东西相关是有道理的。如果我有一个带有特殊按钮的组件,它会调度“foo”事件,我将监听该组件,即使按钮调度了事件。

另一方面,通用 IEventDispatcher 没有父关系。如果我有一个自定义数据对象,而另一个恰好是该对象属性的对象调度了一个事件,那么让容器调度一个事件就没有意义(除非特别告知)。哎呀,包含对象甚至可能不知道包含的对象是一个调度程序!除此之外,如果每次调度私有(private)属性时都调度一个容器,那将在很短的时间内导致递归事件调度和可怕的堆栈溢出。

但是我为什么说它是有限的呢?

MouseEvents 气泡。这很清楚。但是自定义事件通常不会像 MouseEvents 那样冒泡。当 MouseEvent 冒泡时,它有两个阶段,一个捕获阶段和一个非捕获阶段(?不确定它实际上叫什么)阶段。捕获阶段从 root 开始,并进入实际调度 DisplayObject,而另一个阶段从 DisplayObject 开始,然后按其方式进行到 root

我经常发现在从自定义组件分派(dispatch)事件时省略了捕获阶段。这通常一点也不重要,但它确实会影响奇怪的极端情况,因此最好提防。

关于flash - actionscript 3 冒泡可以用于自定义事件和对象层次结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6347251/

相关文章:

actionscript-3 - as3声音类卸载声音

actionscript-3 - 为每台计算机生成静态唯一 ID,而不将其存储在本地 ActionScript 中

flash - Flash 图片

actionscript-3 - ActionScript 3 : Check an array for a match

c# - AS3 客户端套接字无法连接到本地网络服务器

javascript - Flex 捕获应用程序上的所有鼠标点击

actionscript-3 - ActionScript 库项目与 Flex 库项目

flash - 开始使用 Molehill,我应该开始学习什么 api?

javascript - 使用ExternalInterface让Javascript处理SWF文件时出现问题

html - 在页面上嵌入外部 Flash 视频