Flash AS3鼠標事件使用

鼠標事件(MouseEvent)和鼠標位置(AS3鼠標座標總結)是RIA中最重要的人機交互途徑。
1 鼠標事件分爲MOUSE_OVER, MOUSE_MOVE, MOUSE_DOWN, MOUSE_UP, MOUSE_OUT, MOUSE_WHEEL和MOUSE_LEAVE。其中前六個事件都來自flash.events.MouseEvent類,最後一個MOUSE_LEAVE卻是來自flash.events.Event,在導入類包的時候一定要注意這個問題,因爲我在這點上就花了很長時間調試,才得發現問題所在。
MOUSE_OVER - 鼠標移動到目標對象之上時觸發, 可以用於模擬按鈕的mouse over效果;
MOUSE_MOVE - 鼠標在目標對象之上移動時觸發,主要用於判斷。比如判斷在拖拽實例時,實例是否在允許的範圍之內,如果超出,立刻停止拖拽或者重新設定實例的座標;
MOUSE_DOWN - 鼠標在目標對象之上按下時觸發。注意,只有按下鼠標左鍵時纔會觸發,右鍵和滾輪都不會觸發。在目標對象之外按下鼠標左鍵,再移動到目標對象之上時,也不會觸發;
MOUSE_UP - 鼠標在目標對象之上鬆開時觸發。注意,只有鬆開鼠標左鍵時纔會觸發,右鍵和滾輪都不會觸發。在目標對象之上按下鼠標左鍵,再移動到目標對象之外鬆開時,不會觸發。但在目標對象之外按下鼠標左鍵,再移動到目標對象之上鬆開時,就會觸發。
MOUSE_OUT- 鼠標移動到目標對象之外時觸發。
MOUSE_WHEEL - 鼠標在目標對象之上轉動滾輪時觸發。
MOUSE_LEAVE - 當光標離開舞臺時觸發(stage.addEventListener(Event.MOUSE_LEAVE,leaveHandler);)。在使用自定鼠標後,在鼠標離開舞臺時,觸發MOUSE_LEAVE事件,然後可以把自定義的鼠標隱藏掉,避免還停留在舞臺上。
2 mouseChildren。目標對象中含有子實例時,感應鼠標行爲的是子時列,而非目標對象。如果使用 cursor.mouseEnabled=false; 就可以由目標對象來更應鼠標行爲。
3 mouseEnabled。當實例重疊時,出於顯示列表上方的實例總比下方實例更有優先權感應鼠標行爲。當想讓下方實例感應鼠標行爲時使用 cursor.mouseEnabled=false; 即可。這常用於自定義鼠標後,去除自定義鼠標對鼠標行爲的干涉,因爲自定義鼠標往往一直處於鼠標下方,其他實例無法再感應到鼠標的變化。
另外,也許DOUBLE_CLICK也應該算做鼠標事件,但要使用它,必須先讓
doubleClickEnabled=true:
var bg:Sprite=new Sprite();
bg.doubleClickEnabled=true;
bg.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
… 

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