AS3:辨析ROLL_OVER與MOUSE_OVER,ROLL_OUT與MOUSE_OUT

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事件的區別在於如下兩點:

  1. 鼠標在母組件與子組件上移入移出時是否調度的區別。
  2. MOUSE事件具有冒泡階段而ROLL事件沒有,決定了在子組件調度事件時母組件是否能監聽到的區別。

總之,ROLL事件將整個母組件包括其子組件看成一個組件,移入移出整個組件的邊界時母組件才調度事件並能監聽該事件。

FLASH示例

在母容器設置監聽這四個事件,顯示內容前一個爲調度事件來源,後一個爲調度的事件名稱。

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