擷取滑鼠輸入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; } |
|