关于roll_over 和 mouse_over的区别,这篇文章说明的很清楚,http://zengrong.net/post/1105.htm

全文如下:

在MouseEvent中,ROLL_OVER和MOUSE_OVER、ROLL_OUT和MOUSE_OUT是两对比较相似的事件,它们有什么区别呢?AS3语言参考中是这样解释的:

rollOver 事件的目的是简化带有子级的显示对象容器的移开行为的编码。当鼠标进入某个显示对象区域或者从其子级以外的对象进入任何其子级区域时,该显示对象将分派 rollOver 事件。这种行为与 mouseOver 事件的行为不同,每次鼠标进入显示对象容器的任何子对象区域时都会分派此事件,即使鼠标已在显示对象容器的另一个子对象上也是如此。

解释得有些拗口,实际上简单说就是:ROLL_OVER事件无视子对象,只监听根对象的事件。

看了下面演示,就更清楚了。

源码:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
 
[SWF(width=350,height=400)]
public class SimpleSample9 extends Sprite
{
private var _spriteChild:Sprite;
private var _spriteParent:Sprite;
private var _tf:TextField;
private var _line:int=0;
 
public function SimpleSample9()
{
_spriteChild = new Sprite();
_spriteChild.name = 'child';
_spriteChild.graphics.beginFill(0x81ADF0);
_spriteChild.graphics.drawCircle(0, 0, 40);
_spriteChild.graphics.endFill();
 
_spriteParent = new Sprite();
_spriteParent.name = 'parent';
_spriteParent.graphics.beginFill(0x0000ff);
_spriteParent.graphics.drawCircle(0,0, 90);
_spriteParent.graphics.endFill();
 
_spriteParent.addChild(_spriteChild);
addChild(_spriteParent);
_spriteParent.x = stage.stageWidth/2;
_spriteParent.y = _spriteParent.height/2;
 
_tf = new TextField();
_tf.border = true;
_tf.width = stage.stageWidth;
_tf.height = stage.stageHeight-_spriteParent.y-_spriteParent.height/2;
_tf.y = stage.stageHeight - _tf.height;
addChild(_tf);
 
_spriteParent.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
_spriteParent.addEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
_spriteParent.addEventListener(MouseEvent.ROLL_OVER, mouseHandler);
_spriteParent.addEventListener(MouseEvent.ROLL_OUT, mouseHandler);
}
 
private function mouseHandler(evt:MouseEvent):void
{
_line++;
var __ctName:String = evt.currentTarget.name;
var __tName:String = evt.target.name;
var __rName:String = evt.relatedObject == null ? 'null' : evt.relatedObject.name;
_tf.text = _line.toString()+','+(evt.type+',currentTarget:'+__ctName+',target:'+__tName+',relatedObject:'+__rName+'\n') + _tf.text;
}
}
}

我自己的一点理解:

当鼠标在 大圆parent的范围内 移到 小圆child中 时,

大圆parent抛出mouse_out事件,小圆childe抛出mouse_over事件,而小圆抛出的事件通过冒泡又被大圆截获到!

大圆抛出的mouse_out事件的relatedObject的值是child

小圆抛出的mouse_over时间的relatedObject的值是parent

而如果只监听了roll_over事件时,当鼠标在 在 大圆parent的范围内 移到 小圆child中 时,是没有事件抛出的。

roll_over比mouse_over先抛出

mouse_out又比roll_out先抛出

mouseevent tips的更多相关文章

  1. Flex中如何通过showAllDataTips属性使鼠标移动到图表时显示所有的数据Tips的例子

    原文 http://blog.minidx.com/2008/11/10/1616.html 接下来的例子演示了Flex中如何通过showAllDataTips属性,使鼠标移动到图表时显示所有的数据T ...

  2. java.awt.event.MouseEvent鼠标事件的定义和使用 以及 Java Swing-JTextArea的使用

    最近发现一个CSDN大佬写的Java-Swing全部组件的介绍:Java Swing 图形界面开发(目录) JTextArea 文本区域.JTextArea 用来编辑多行的文本.JTextArea 除 ...

  3. Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)

    忘记Root密码肿么办 Mac上安装MySQL就不多说了,去mysql的官网上下载最新的mysql包以及workbench,先安装哪个影响都不大.如果你是第一次安装,在mysql安装完成之后,会弹出来 ...

  4. 【Tips】史上最全H1B问题合辑——保持H1B身份终级篇

    [Tips]史上最全H1B问题合辑——保持H1B身份终级篇 2015-04-10留学小助手留学小助手 留学小助手 微信号 liuxue_xiaozhushou 功能介绍 提供最真实全面的留学干货,帮您 ...

  5. layer.js中layer.tips

    <script src="~/Content/js/layer/layer.js"></script> layer.tips('名称不能为空', '#pro ...

  6. HTML 最简单的tips 怎么支持指定DIV显示提示信息

    <body> <style type="text/css"> a.link{position:relative;} a.link div.tips{ bor ...

  7. CSS:CSS使用Tips

    Css是前端开发中效果展现的主要部分之一,良好的Css书写习惯可以为实际的项目开发提高效率,也可以为实现良好的团队合作提供保证. 一般新手在使用Css的时候经常会犯一些错误,出现一些不经意的漏洞,如果 ...

  8. 【读书笔记】100个Switf必备tips

    声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 1.Selector 在Swi ...

  9. 【转】40个良好用户界面Tips

    一个良好的用户界面应具有高转换率,并且易于使用.但要用户体验良好并不容易做到,下面我们整理了40个良好用户界面Tips,希望能对你有帮助! 1 尽量使用单列而不是多列布局 单列布局能够让对全局有更好的 ...

随机推荐

  1. VCL里为什么要用类函数代替API,为什么要用CM_消息代替虚函数

    之所以要用类函数代替API,是因为VCL对它做了一些包装,好在API起作用之前和之后做一些额外的事情:通知和判断等等.之所以类函数要包装一个CM_消息,是因为这样方便程序员(在调用类函数的基础上)截断 ...

  2. Ubuntu刷新DNS

    linux刷新dns的缓存方法是: sudo /etc/init.d/nscd restart 如果发现提示命令找不到: sudo: /etc/init.d/nscd: command not fou ...

  3. qt resize() 和 geometry()

    resize(),设置的部件客户区的大小.只有当该部件被show后才生效,即geomery() 返回的才是 resize() 的客户区大小.

  4. MyBatis学习总结_10_批量操作

    一.mybatis中的批量操作    批量操作核心就是一次传入多个数据然后进行相关操作,增删改查中掌握其中一个其他的也不成问题 1.最新在做的短信平台,要批量插入群发的短信记录: 当然批量操作还有:批 ...

  5. Spring_MVC_教程_快速入门_深入分析

    Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...

  6. mysql 生成批量存储过程

    CREATE  PROCEDURE `BatchInsert`(IN init INT, IN loop_time INT)BEGIN DECLARE Var INT; DECLARE ID INT; ...

  7. [转]设置控件全局显示样式appearance proxy

    转自:huifeidexin_1的专栏 appearance是apple在iOS5.0上加的一个协议,它让程序员可以很轻松地改变某控件的全局样式(背景) @selector(appearance) 支 ...

  8. minhash

    minhash是一种基于jaccard index 相似度的算法.属于LSH(Location Sensitive Hash)家族中的一员. jaccard index :有两个集合A={a , b ...

  9. android异步加载图片

    import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; impo ...

  10. Cookie工具类 - CookieUtil.java

    Cookie工具类,提供Cookie的创建.获取.删除方法. 源码如下:(点击下载 -CookieUtil.java ) import javax.servlet.http.Cookie; impor ...