rollOver与mouseOver同样在鼠标移到目标上时触发事件,细微区别在于,mouseOver的bubbles等于true,而rollOver的bubbles是false.
所以当监听MouseEvent.ROLL_OVER事件后,鼠标移动到panel的几个按钮时,程序仍然认为鼠标悬停在panel上方。假设我们监听MouseEvent.MOUSE_OVER, 随着鼠标移到panel的按钮上,程序立刻判断鼠标离开了panel,已经到了按钮上方——这个结果不是我们需要的,此时本应去单击按钮,结果程序判断鼠标离开panel,会直接removeChild或者visible=false。
关于冒泡的话,不得不提AS3的事件流,简单的说就是一个捕捉——目标——冒泡的循环过程:事件发生后,先从显示层中的根容器开始往下层级逐个捕捉直至到达派发事件的目标对象后向上返回冒泡,而这一事件中的target属性始终指向最内层的派发事件目标,currentTarget则顾名思义指向事件流中当前所在的对象。
事件发生后,从根节点到目标节点的父节点,这中间所有节点都有两次机会可以响应事件,分别在捕获和冒泡阶段。在事件流经过的任意节点上注册侦听器都会触发。当然前提是打开了捕获和冒泡功能。
默认情况下,捕获功能处于关闭状态,因为实际开发中,监听目标很明确,没必要捕获。
而事件只有在bubbles属性为true时才进行冒泡,默认冒泡的事件包括:change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp。一旦捕获打开,默认的冒泡将被取消。
因此在同一个监听器中不能同时打开捕获和冒泡,只能注册两个监听一个开捕获一个开冒泡才行。
只有可视化对象(容器,控件)才有捕获和冒泡阶段,而像XML,WebService等非可视化对象只有目标阶段。
注册侦听器方法为:
addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false)
useCapture即为是否打开捕获功能,
priority为优先级设定,当有多个侦听器时,priority越大,优先级越高越先调用,如果同级的话则按注册的顺序来调用。这里注意即使优先级有先后也无法保证后一个侦听调用执行时前一个侦听函数已执行完毕。
useWeakReference为弱引用开关,推荐设为true,便于垃圾自动回收。但最规范的还是直接removeEventListener。注意当注册监听器打开了捕获,则removeEventListener(type:String, listener:Function, useCapture:Boolean=false)的useCapture必须设为true,否则无效
事件对象的构造方法为:
Event(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
bubbles即为是否冒泡
cancelable为true时可以调用PreventDefault方法停止系统默认的行为。比如输入文本,默认行为会马上显示在文本区,当cancelable为true时调用PreventDefault方法让字符不出现。
另外,Event还有两个方法可以停止事件流的继续传播,stopPropagation和stopImmediatePropagation,区别在于前者不会停止正在处理的对象。而后者还会停止同一object上的其他侦听器。
详细出处参考:http://www.jb51.net/article/20662.htm
分享到:
相关推荐
- **DOM事件**:如`click`, `mouseover`, `mouseout`, `keydown`等,这些通用事件可以在任何元素上触发,包括Flex容器和项目。 - **自定义事件**:开发者可以通过`CustomEvent` API创建与Flex布局相关的自定义事件...
3,在FLEX应用程序上监听mouseOver事件,并记录当前鼠标所在对象 4,当入口函数接收到HTML发送的右键事件后,模拟生成一个鼠标右键事件(buttonDown = false), 并发送到当前对象 5,在对象的mouseDown处理函数中,根据...
标题“IE应用了filter后mouseover事件异常”涉及的是在Internet Explorer浏览器中,当CSS滤镜(filter)属性被使用后,可能导致鼠标悬停事件(mouseover)处理程序出现不正常行为的问题。这个问题通常与IE浏览器特有...
3. `mouseenter` 和 `mouseleave` 事件: 这两个事件是为了解决 `mouseover` 和 `mouseout` 的问题而引入的。`mouseenter` 仅在鼠标指针首次进入元素时触发,不论元素内是否有子元素,这减少了不必要的重复触发。...
Flex框架支持多种鼠标和键盘事件,例如:`click`、`mouseover`、`mouseout`、`mousemove`、`keydown`、`keyup`等。这些事件可以用来创建复杂的交互效果,比如响应用户的点击、悬停、拖放或键盘输入等操作。 在Flex...
标题所涉及的知识点为“jQuery中mouseover事件用法实例”。此主题深入浅出地介绍了jQuery框架下mouseover事件的基本用法,并通过实例讲解了如何应用此事件来响应鼠标指针滑过元素时的交互行为。现在,我将详细分析该...
同时,我们还可以通过监听`mouseOver`、`mouseOut`等事件来实现按钮的悬停效果,或者使用`enabled`属性控制按钮的可用性。 至于提供的`Menu.fla`和`Menu.swf`文件,它们很可能是Flex项目的源文件和编译后的SWF文件...
3. **监听鼠标事件**:我们需要监听两个鼠标事件——`mouseOver`和`mouseOut`。`mouseOver`事件在鼠标进入图片区域时触发,`mouseOut`事件在鼠标离开图片区域时触发。在这些事件的处理函数中,我们将实现图片的放大...
4. **事件处理**:在用户与鱼眼菜单交互时,我们需要监听鼠标事件,如mouseover、mousedown、mouseup等,根据这些事件更新图形状态,实现鱼眼效果的动态响应。 5. **矩阵变形**:在Flex中,Matrix类可以用来进行...
### mouseover事件示例解析 本篇文章将详细解析一个基于`mouseover`事件的示例代码,帮助读者深入了解`mouseover`事件的工作原理及其在实际开发中的应用。通过这个示例,我们将学习如何使用JavaScript来响应用户的...
知识点有:设置坐标轴样式、图例样式、柱子颜色设置、柱子mouseover、click事件等。还包括比较怪异的图例文字大小设置。 这是一个可直接运行的DEMO。运行示例ColumnChart1时,需要根据你BigFontLegendItem类的具体...
3. mouseenter和mouseleave事件:与mouseover和mouseout不同,mouseenter和mouseleave事件不会在事件冒泡阶段触发。这意味着,只有当鼠标指针实际进入或离开被选元素本身时,这些事件才会被触发,从而避免了因子元素...
在JavaScript中,mouseover和mouseout事件是常用的事件,它们分别在鼠标指针进入和离开指定元素时触发。在事件处理中,区分鼠标指针是从子元素移入还是从父元素移出对于正确地触发相应的事件非常关键。本文详细探讨...
鼠标在移入到td上面之后,在td的相对位置浮动出一个div,基于相对位置。 jQuery的mouseover操作div。 使用jQuery获取鼠标所在元素。
3. **鼠标事件监听**:为了实现鼠标进入和离开时提示信息的显示和隐藏,我们需要监听`mouseOver`和`mouseOut`事件。在这些事件的处理函数中,你可以控制Tooltip的可见性。例如: ```actionscript button....
- 鼠标交互:利用MouseOver、MouseOut和Click事件,可以实现鼠标悬停时高亮显示、点击后展开子菜单的效果。 - 效果库:Flex SDK内含的Effect类库提供了许多预定义的动画效果,如Fade、Slide等,可以直接应用于菜单...
在JavaScript和jQuery中,`mouseover` 和 `mouseout` 事件是常见的用于响应鼠标进入和离开元素的事件。然而,它们在处理嵌套元素时可能会引发一些问题,导致事件被不期望地多次触发。这是因为当鼠标从一个子元素移动...
具体来说,通过编写一个辅助函数`isMouseLeaveOrEnter`来检查`mouseover`或`mouseout`事件是否发生在特定的元素上,如果事件是从`handler`元素开始的,或者最终目标不是`handler`元素,则该事件不需要进一步处理,...