滑鼠的按一下動作會建立滑鼠事件,這些事件可以用來觸發互動性功能。您可以將事件偵聽程式加入「舞台」上,以便偵聽在 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;
}
|
|
|