ROLL_OVER與MOUSE_OVER的調度的區別
- 可視組件在鼠標進入該組件時會調度MOUSE_OVER事件,即使是從其子組件移到該組件依然會觸發該事件。
- 可視組件在鼠標從不是其子組件的其餘組件中進入該組件時會調度ROLL_OVER事件,直觀來看,就是鼠標從外部移入該組件才調用。
ROLL_OUT與MOUSE_OUT的調度的區別
- 可視組件在鼠標移出該組件時會調度MOUSE_OUT事件,即使是移到該組件的子組件依然會觸發該事件。
- 可視組件在鼠標移到不是其子組件的其餘組件中會調度ROLL_OUT事件,直觀來看,就是鼠標移到該組件外部才調用。
在含有子組件的可視組件上監聽四個事件
- 鼠標由外部進入母組件時能監聽到由母組件調度的ROLL_OVER與MOUSE_OVER事件;
- 鼠標由母組件進入子組件時能監聽到由子組件調度的MOUSE_OVER事件和母組件調度的MOUSE_OUT事件;
- 此時子組件還調度了ROLL_OVER事件,但是由於ROLL_OVER沒有冒泡階段(詳見AS3:事件流機制),因此其母組件不能監聽到該事件;
- 鼠標由子組件移到母組件時能監聽到由子組件調度的MOUSE_OUT事件和母組件調度的MOUSE_OVER事件;
- 同樣的,此時子組件還調度了ROLL_OUT事件,但是母組件同樣監聽不到;
- 鼠標由母組件移到外部時能監聽到由母組件調度的ROLL_OUT與MOUSE_OUT事件;
總結
MOUSE事件與ROLL事件的區別在於如下兩點:
- 鼠標在母組件與子組件上移入移出時是否調度的區別。
- MOUSE事件具有冒泡階段而ROLL事件沒有,決定了在子組件調度事件時母組件是否能監聽到的區別。
總之,ROLL事件將整個母組件包括其子組件看成一個組件,移入移出整個組件的邊界時母組件才調度事件並能監聽該事件。
FLASH示例
在母容器設置監聽這四個事件,顯示內容前一個爲調度事件來源,後一個爲調度的事件名稱。