擷取滑鼠輸入

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

滑鼠的按一下動作會建立滑鼠事件,這些事件可以用來觸發互動性功能。您可以將事件偵聽程式加入「舞台」上,以便偵聽在 SWF 檔中任何位置所發生的滑鼠事件。您也可以將事件偵聽程式加入「舞台」上屬於 InteractiveObject 子物件的物件中 (例如,Sprite 或 MovieClip);按一下物件時,就會觸發這些偵聽程式。

如同鍵盤事件一樣,滑鼠事件也會反昇。在下列範例中,因為 square 是 Stage 的子系,所以當按一下正方形後,將同時從 Sprite 的 square 以及 Stage 物件傳送事件:

var square:Sprite = new Sprite(); 
square.graphics.beginFill(0xFF0000); 
square.graphics.drawRect(0,0,100,100); 
square.graphics.endFill(); 
square.addEventListener(MouseEvent.CLICK, reportClick); 
square.x = 
square.y = 50; 
addChild(square); 
 
stage.addEventListener(MouseEvent.CLICK, reportClick); 
 
function reportClick(event:MouseEvent):void 
{ 
    trace(event.currentTarget.toString() +         " dispatches MouseEvent. Local coords [" +         event.localX + "," + event.localY + "] Stage coords [" +         event.stageX + "," + event.stageY + "]"); 
}

在上一個範例中,請注意滑鼠事件包含了有關按一下事件的位置資訊。 localX localY 屬性包含發生按一下事件所在的位置 (在顯示鏈中最下層的子系)。例如,按一下 square 的左上角會報告區域座標 [0,0],因為該位置為 square 的註冊點。或者, stageX stageY 屬性也會參考到「舞台」上按一下事件的全域座標。針對這些座標的相同按一下事件也會報告座標 [50,50],因為 square 已經移到這些座標上。不管您希望如何回應使用者互動,這兩個座標配對都會很有幫助。

備註: 在全螢幕模式中,您可以設定應用程式以使用滑鼠鎖定。滑鼠鎖定會停用游標並啟用未繫結的滑鼠移動方式。如需詳細資訊,請參閱 使用全螢幕模式

MouseEvent 物件也包含 altKey ctrlKey shiftKey 這些 Boolean 屬性。您可以使用這些屬性來檢查發生滑鼠按一下事件時,是否同時按下了 Alt、Ctrl,或 Shift 鍵。

在舞臺上四處拖曳 Sprite

您可以利用 Sprite 類別的 startDrag() 方法,允許使用者在舞臺上四處拖曳 Sprite 物件。下列程式碼將顯示此類範例:

import flash.display.Sprite; 
import flash.events.MouseEvent; 
 
var circle:Sprite = new Sprite(); 
circle.graphics.beginFill(0xFFCC00); 
circle.graphics.drawCircle(0, 0, 40); 
 
var target1:Sprite = new Sprite(); 
target1.graphics.beginFill(0xCCFF00); 
target1.graphics.drawRect(0, 0, 100, 100); 
target1.name = "target1"; 
 
var target2:Sprite = new Sprite(); 
target2.graphics.beginFill(0xCCFF00); 
target2.graphics.drawRect(0, 200, 100, 100); 
target2.name = "target2"; 
 
addChild(target1); 
addChild(target2); 
addChild(circle); 
 
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)  
 
function mouseDown(event:MouseEvent):void 
{ 
    circle.startDrag(); 
} 
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); 
 
function mouseReleased(event:MouseEvent):void 
{ 
    circle.stopDrag(); 
    trace(circle.dropTarget.name); 
}

如需詳細資訊,請參閱 變更位置 中建立滑鼠拖曳互動一節的內容。

在 AIR 中拖放

在 Adobe AIR 中,您可以啟用拖放支援,允許使用者將資料拖曳至應用程式或從應用程式拖出資料。如需詳細資訊,請參閱 在 AIR 中拖放

自訂滑鼠游標

您可以隱藏「舞台」上任何顯示物件的滑鼠游標 (滑鼠指標) 或是將它的滑鼠按鍵對換。若要隱藏滑鼠游標,請呼叫 Mouse.hide() 方法。呼叫 Mouse.hide() 、偵聽「舞台」的 MouseEvent.MOUSE_MOVE 事件,以及將顯示物件 (您的自訂游標) 的座標設定為該事件的 stageX stageY 屬性,即可自訂游標。下列範例將說明這項工作的基本執行方式:

var cursor:Sprite = new Sprite(); 
cursor.graphics.beginFill(0x000000); 
cursor.graphics.drawCircle(0,0,20); 
cursor.graphics.endFill(); 
addChild(cursor); 
 
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor); 
Mouse.hide(); 
 
function redrawCursor(event:MouseEvent):void 
{ 
    cursor.x = event.stageX; 
    cursor.y = event.stageY; 
}