마우스를 클릭하면 대화형 기능을 트리거하는 데 사용할 수 있는 마우스 이벤트가 만들어집니다. 이벤트 리스너를 스테이지에 추가하면 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
의 왼쪽 위 모서리를 클릭하면
square
의 등록 포인트인 로컬 좌표 [0,0]이 보고됩니다. 또는
stageX
및
stageY
속성이 스테이지 클릭의 전역 좌표를 참조합니다. 이 좌표의 경우 같은 클릭으로 [50,50]이 보고됩니다.
square
가 해당 좌표로 이동되었기 때문입니다. 이러한 두 좌표 쌍은 사용자 상호 작용에 대한 응답 방식에 따라 유용할 수 있습니다.
참고:
전체 화면 모드에서 마우스 잠금을 사용하도록 응용 프로그램을 구성할 수 있습니다. 마우스 잠금을 활성화하면 커서가 비활성화되고 마우스를 제한 없이 움직일 수 있습니다. 자세한 내용은
전체 화면 모드 작업
을 참조하십시오.
MouseEvent 객체에는
altKey
,
ctrlKey
및
shiftKey
라는 부울 속성도 포함되어 있습니다. 이러한 속성을 사용하여 마우스 클릭 시 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;
}
|
|
|