동작 이벤트는 기본 터치 이벤트와 같은 방식으로 처리합니다.
TransformGestureEvent
클래스,
GestureEvent
클래스 및
PressAndTapGestureEvent
클래스의 이벤트 유형 상수에 정의된 일련의 동작 이벤트를 수신할 수 있습니다.
동작 터치 이벤트 처리:
-
flash.ui.Multitouch.inputMode
속성을
MultitouchInputMode.GESTURE
로 설정하여 응용 프로그램이 동작 입력을 처리하도록 설정합니다.
-
Sprite 또는 TextField와 같은 InteractiveObject 클래스에서 속성을 상속하는 클래스의 인스턴스에 이벤트 리스너를 추가합니다.
-
처리할 동작 이벤트 유형을 지정합니다.
-
이벤트에 응답하여 특정 작업을 수행할 이벤트 핸들러 함수를 호출합니다.
예를 들어 다음 코드는
mySprite
에서 그린 사각형을 터치 스크린에서 스와이프할 때 메시지를 표시합니다.
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var myTextField:TextField = new TextField();
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0,0,40,40);
addChild(mySprite);
mySprite.addEventListener(TransformGestureEvent.GESTURE_SWIPE, swipehandler);
function swipehandler(evt:TransformGestureEvent): void {
myTextField.text = "I've been swiped";
myTextField.y = 50;
addChild(myTextField);
}
두 손가락 두드리기 이벤트는 같은 방식으로 처리되지만 GestureEvent 클래스를 사용합니다.
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var myTextField:TextField = new TextField();
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0,0,40,40);
addChild(mySprite);
mySprite.addEventListener(GestureEvent. GESTURE_TWO_FINGER_TAP, taphandler);
function taphandler(evt:GestureEvent): void {
myTextField.text = "I've been two-finger tapped";
myTextField.y = 50;
addChild(myTextField);
}
누르고 두드리기 이벤트도 같은 방식으로 처리되지만 PressAndTapGestureEvent 클래스를 사용합니다.
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var myTextField:TextField = new TextField();
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0,0,40,40);
addChild(mySprite);
mySprite.addEventListener(PressAndTapGestureEvent. GESTURE_PRESS_AND_TAP, taphandler);
function taphandler(evt:PressAndTapGestureEvent): void {
myTextField.text = "I've been press-and-tapped";
myTextField.y = 50;
addChild(myTextField);
}
참고:
런타임 환경에 따라 GestureEvent, TransformGestureEvent 및 PressAndTapGestureEvent 이벤트 유형 중 일부가 지원되지 않을 수 있습니다. 예를 들어 일부 터치 지원 장치에서는 여러 손가락 스와이프를 감지할 수 없습니다. 따라서 이러한 장치에서는 InteractiveObject
gestureSwipe
이벤트가 지원되지 않습니다. 응용 프로그램이 제대로 작동하도록 특정 이벤트 지원 여부를 테스트해야 합니다. 자세한 내용은
문제 해결
을 참조하십시오.
동작 이벤트 속성
동작 이벤트는 기본적인 터치 이벤트보다 이벤트 속성 범위가 작습니다. 동작 이벤트는 이벤트 핸들러 함수의 이벤트 객체를 통해 터치 이벤트와 같은 방식으로 액세스합니다.
예를 들어 다음 코드에서는 사용자가 회전 동작을 수행할 때
mySprite
를 회전합니다. 텍스트 필드에는 마지막 동작 이후 회전 수가 표시됩니다. 이 코드를 테스트할 때는 여러 번 회전하여 값이 변하는지 확인해야 합니다.
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var mySpriteCon:Sprite = new Sprite();
var myTextField:TextField = new TextField();
myTextField.y = 50;
addChild(myTextField);
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(-20,-20,40,40);
mySpriteCon.addChild(mySprite);
mySprite.x = 20;
mySprite.y = 20;
addChild(mySpriteCon);
mySprite.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rothandler);
function rothandler(evt:TransformGestureEvent): void {
evt.target.parent.rotationZ += evt.target.rotation;
myTextField.text = evt.target.parent.rotation.toString();
}
참고:
런타임 환경에 따라 일부 TransformGestureEvent 속성이 지원되지 않을 수 있습니다. 예를 들어 일부 터치 지원 장치에서는 화면의 동작 회전을 감지할 수 없습니다. 즉, 해당 장치에서는
TransformGestureEvent.rotation
속성이 지원되지 않습니다. 응용 프로그램이 제대로 작동하도록 특정 속성 지원 여부를 테스트해야 합니다. 자세한 내용은
문제 해결
을 참조하십시오.