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") -
} -
} - }