mouseevent tips
關于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先拋出
?
?
?
轉載于:https://www.cnblogs.com/tianlanliao/p/3430257.html
總結
以上是生活随笔為你收集整理的mouseevent tips的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google Map浏览下载器
- 下一篇: [SPS2010] 使用心得 7 - e