本文将与您分享关于Flex事件机制中Flex事件的分布和监控的示例分析的内容。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。
什么是Flex事件机制
Flex事件可以看作是一种触发机制,在满足一定条件时会触发此事件。例如,MouseEvent指的是操作鼠标时触发的一系列事件。很多控件中都有click事件,这个事件就是MouseEvent的一个实例。当鼠标被点击时,系统会自动抛出一个名为click的MouseEvent事件(这个方法后面会介绍)。如果此时在单击时注册了一个方法,该方法将在事件被触发时执行。
1.Flex事件分发
最终,从事件调度器继承的所有对象都将包含dispatchEvent方法,该方法有一个参数,即事件对象。
前面提到的事件注册渠道只是一个渠道。其实事件就是用这种方法分布的,渠道只是渠道。
他的功能是分发一个事件对象。他的分配没有目的。这是一种广播形式。Flex的事件监控线程将接收各种事件(我们称之为捕获事件,这将在后面介绍)。然后,您想要的事件由事件类型属性标识。
1)Flex事件对象
分发事件时,将分发事件对象。不管是哪个事件类,它都是继承自flash.events.Event对象,并且它包含一些重要的属性、类型和气泡。
类型是事件的类型,事件监视器使用此参数来识别它是否是它正在监视的事件。
气泡是一个布尔值,它决定了对象是否会被向上传递。默认值为false。这是什么意思?画一幅画,你就会明白了。
例如,当按钮组件分发点击事件对象时,气泡被设置为false,则它的分发是这样的。
示意图代码
dispatchEvent(new mouseevent(" click ",false));事件不能跨越组件本身,当然前面提到的注册通道除外(这很生动)
因此,如果通道未注册,则此按钮组件分发的事件无法在Flex的主应用程序中捕获。
如果我们设置泡泡为真,这就是他的样子。
dispatchEvent(new mouseevent(" click ",true));可以看到,这个事件可以跨越组件本身,到达Flex主应用。不仅如此,在帮助手册中明确表示,如果在传递过程中没有捕捉到,这个事件会一层一层上传到最后阶段,然后如果没有捕捉到,这个事件就会被销毁。
这样,即使我们没有click的事件通道,只要在Flex主应用程序中添加一个Flex addEventListener,就可以得到这个分布式click事件。
那么,注册通道不是没用吗?不是,我之前说过,注册通道是存在的,是可见的,所以如果你的组件要被别人使用,一目了然,不需要知道你的源代码中分布着什么事件。但是,不要听和注册同一个事件,它会重复。(我们稍后再谈)
2.Flex事件监听
在分发中,我们说如果没有通过注册通道调用触发事件,那么我们需要一个监视器来捕获它。如何捕获分布式事件是通过Flex事件的类型值来实现的。
比如:
MX : applicationxmlns : xmx 3360 applicationxmlns : MX=http://www . adobe.com/2006/mxml layout=' absolute ' xmlns : compcreationcomplete=' init()' MX : script