mouseOver 和rollOver區別

mouseOver的bubbles是true,rollOver的bubbles是false。

兩者的區別,其實要在偵聽MOUSE_OUT事件時,變得很明顯。

假如一個Canvas中間包含一個Button,比較偵聽canvas的MOUSE_OUT和ROLL_OUT事件:
1.canvas.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
這種情況下,鼠標移到button後,鼠標移開button經過canvas時,會觸發canvas的MOUSE_OUT和MOUSE_OVER事件。因爲MOUSE_OVER/MOUSE_OUT事件是有冒泡階段的,當button觸發事件之後,事件會冒泡傳遞給父容器(即canvas),所以會觸發canvas上的事件。

2.canvas.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
這種情況下,鼠標只有移開整個canvas纔會觸發canvas的ROLL_OUT事件。而即使鼠標移到button上再移開,也不會執行觸發canvas的ROLL_OUT事件。因爲ROLL_OUT事件不會冒泡往父容器傳遞。


package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	public class DDDDD extends Sprite
	{
		public function DDDDD()
		{
			var bt:Sprite=new Sprite();
			bt.graphics.beginFill(0x12d211,1)
			bt.graphics.drawRect(0,0,50,50);
			bt.graphics.endFill();
			
			var sp:Sprite=new Sprite();
			sp.graphics.beginFill(0x123211,1)
			sp.graphics.drawRect(0,0,100,100);
			sp.graphics.endFill();
			sp.addChild(bt);
			this.addChild(sp);
			
 			sp.addEventListener(MouseEvent.MOUSE_OUT,ddd2);
		}
 
		private function ddd2(evt:Event):void{
			trace("sp")
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章