談Flash中的鼠標響應

你們都知道,Flash動畫可以響應鼠標動做,從而實現各式各樣的人機交互。經常使用的鼠標都有左中右三個鍵。

  1.左鍵

  鼠標左鍵在Windows系統下擔負着神聖的職責,在Flash中也不例外。Flash可以自動捕獲鼠標左鍵的動做,並根據捕獲的動做激發內置的鼠標事件,再根據用戶爲這些事件編寫的處理函數完成對鼠標左鍵的響應。

   按鈕和影片剪輯經常用來完成響應鼠標與實現交互的過程。對於按鈕,能夠用關鍵字on定義的事件處理函數來響應左鍵動做。其中,press表示左鍵按下的 事件,release表示左鍵釋放的事件,releaseOutside表示在按鈕外部釋放左鍵的事件等等。例如,要使按鈕對單擊事件作出響應,能夠在按 鈕的動做面板中添加以下代碼:

on (release) {

trace("單擊了一下");

}

  這樣,在測試狀態下單擊該按鈕時,Flash就會將信息「單擊了一下」發送到輸出窗口。

   對於影片剪輯,也能夠爲其添加on事件處理函數,使其以按鈕的機制響應鼠標左鍵。此外,也能夠用影片剪輯特有的onClipEvent事件處理函數對鼠 標左鍵作出響應。例如,mouseDown表示左鍵按下的事件,mouseUp表示左鍵擡起的事件。與按鈕的press和release事件不一樣的是, mouseDown和mouseUp事件不要求光標位於影片剪輯範圍內。所以,若是要判斷鼠標具體單擊的哪一個影片剪輯,還須要對鼠標位置進行檢測。例如, 下面的代碼使得影片剪輯響應左鍵按下事件並在輸出窗口中顯示光標的位置:
字串7


onClipEvent (mouseDown) {

trace("X座標:"+_root._xmouse);

trace("Y座標:"+_root._ymouse);

}

  這裏,_root._xmouse和_root._ymouse分別表示光標相對於主場景的X座標和Y座標,若是省略_root,則獲得光標相對於影片剪輯自身的座標。

  2.右鍵

  鼠標的右鍵和中鍵是Flash MX 2004新開放的功能。對鼠標右鍵的響應主要體如今容許用戶自定義右鍵的快捷菜單。

  ContextMenu類表示快捷菜單,ContextMenuItem類表示快捷菜單中的菜單項。以下所示的代碼建立ContextMenu類的一個對象my_cm:

  var my_cm = new ContextMenu();

  ContextMenu類的customItems屬性是一個數組,該數組包含了快捷菜單中的全部菜單項。要將菜單項添加到菜單中,須要使用數組的push方法,以下所示:

my_cm.customItems.push(new ContextMenuItem("旋轉", func_rotate));

  這樣,就將「旋轉」菜單項添加到了快捷菜單中,func_rotate是一個函數名,它決定了選擇「旋轉」菜單時所要執行的命令。下面定義該函數:

function func_rotate(obj:Object, menu:ContextMenu) {

obj.onEnterFrame = function() { 字串1 this._rotation += 15; }; }   這裏的參數obj是系統自動捕獲並傳遞的,它就是對鼠標右鍵作出響應並顯示快捷菜單的對象。上面的函數使得選擇「旋轉」快捷菜單時對象以15°/幀的速度進行旋轉。   3.中鍵   在Windows環境中,鼠標中鍵經常用來滾屏——在使用Word的時候,瀏覽網頁的時候,甚至在一個下拉列表框中作出選擇的時候——如今,也包括觀看Flash的時候。固然,這一樣也得歸功於Flash MX 2004。   表示鼠標的Mouse對象中並未定義中鍵滾動事件,Flash MX 2004提供onMouseWheel偵聽器來檢測中鍵滾動。所以,要使得可以對鼠標中鍵的滾動作出響應,就必須向Mouse對象註冊onMouseWheel偵聽器。代碼以下: mouseListener = new Object(); mouseListener.onMouseWheel = function(delta) { clip_mc._x += n * delta; } Mouse.addListener(mouseListener);   其中,delta表示鼠標中鍵的每一個滾動刻度使屏幕滾動的行數,它的值由系統決定,常在1~3之間。上面的代碼使得在鼠標中鍵滾動時,實例clip_mc一次向左或向右移n*delta像素,移動的方向是由中鍵滾動的方向決定的。
相關文章
相關標籤/搜索