MouseEvent.ROLL_OVER和MouseEvent.MOUSE_OVER的区别
在MouseEvent中,ROLL_OVER
和 MOUSE_OVER
、ROLL_OUT
和 MOUSE_OUT
是两对比较相似的事件,它们有什么区别呢?AS3语言参考中是这样解释的:
rollOver 事件的目的是简化带有子级的显示对象容器的移开行为的编码。 当鼠标进入某个显示对象区域或者从其子级以外的对象进入任何其子级区域时, 该显示对象将分派 rollOver 事件。这种行为与 mouseOver 事件的行为不同, 每次鼠标进入显示对象容器的任何子对象区域时都会分派此事件, 即使鼠标已在显示对象容器的另一个子对象上也是如此。
解释得有些拗口,实际上简单说就是: ROLL_OVER
事件无视子对象,只监听根对象的事件。
看了下面演示,就更清楚了。
源码:
1package
2{
3 import flash.display.Sprite;
4 import flash.events.MouseEvent;
5 import flash.text.TextField;
6
7 [SWF(width=350,height=400)]
8 public class SimpleSample9 extends Sprite
9 {
10 private var _spriteChild:Sprite;
11 private var _spriteParent:Sprite;
12 private var _tf:TextField;
13 private var _line:int=0;
14
15 public function SimpleSample9()
16 {
17 _spriteChild = new Sprite();
18 _spriteChild.name = 'child';
19 _spriteChild.graphics.beginFill(0x81ADF0);
20 _spriteChild.graphics.drawCircle(0, 0, 40);
21 _spriteChild.graphics.endFill();
22
23 _spriteParent = new Sprite();
24 _spriteParent.name = 'parent';
25 _spriteParent.graphics.beginFill(0x0000ff);
26 _spriteParent.graphics.drawCircle(0,0, 90);
27 _spriteParent.graphics.endFill();
28
29 _spriteParent.addChild(_spriteChild);
30 addChild(_spriteParent);
31 _spriteParent.x = stage.stageWidth/2;
32 _spriteParent.y = _spriteParent.height/2;
33
34 _tf = new TextField();
35 _tf.border = true;
36 _tf.width = stage.stageWidth;
37 _tf.height = stage.stageHeight-_spriteParent.y-_spriteParent.height/2;
38 _tf.y = stage.stageHeight - _tf.height;
39 addChild(_tf);
40
41 _spriteParent.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
42 _spriteParent.addEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
43 _spriteParent.addEventListener(MouseEvent.ROLL_OVER, mouseHandler);
44 _spriteParent.addEventListener(MouseEvent.ROLL_OUT, mouseHandler);
45 }
46
47 private function mouseHandler(evt:MouseEvent):void
48 {
49 _line++;
50 var __ctName:String = evt.currentTarget.name;
51 var __tName:String = evt.target.name;
52 var __rName:String = evt.relatedObject == null ? 'null' : evt.relatedObject.name;
53 _tf.text = _line.toString()+','+(evt.type+',currentTarget:'+__ctName+',target:'+__tName+',relatedObject:'+__rName+'\n') + _tf.text;
54 }
55 }
56}
- 文章ID:1105
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/mouseevent-roll_over-and-mouseevent-mouse-over/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。