0

我正在开发一个 Air Android 应用程序,我想根据用户手势显示和隐藏菜单。如何将手势识别设置为特定区域而不是整个舞台?(例如从 y 0 到 100 px 的区域)

Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe); 

function onSwipe (e:TransformGestureEvent):void{
if (e.offsetY == 1) { 
 //User swiped towards bottom
showMenu()
 }
 else if (e.offsetY == -1) { 
 //User swiped towards top
hideMenu()
 } 
}
4

1 回答 1

0

您应该将具有适当尺寸和位置的组件添加到舞台(空的 sprite 容器让我们称之为 mySprite),然后您有 2 个选项:

选项1

http://www.republicofcode.com/tutorials/flash/as3swipegesture/

选项 2

添加检查以查看是否在 mySprite 上完成了滑动

function onSwipe (e:TransformGestureEvent):void{\
**if (e.target=!mySprite){return}**
if (e.offsetY == 1) { 
 //User swiped towards bottom
showMenu()
 }
 else if (e.offsetY == -1) { 
 //User swiped towards top
hideMenu()
 } 
}

选项 3

Multitouch.inputMode = MultitouchInputMode.GESTURE;

var mySprite = new Sprite();
mySprite.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0, 0, 100, 80);
var myTextField = new TextField();
myTextField.y = 200;
addChild(mySprite);
addChild(myTextField);

function onSwipe(evt:TransformGestureEvent):void {

    if (evt.offsetX == 1 ) {
    myTextField.text = "right";
    }
    if (evt.offsetY == -1) {
    myTextField.text = "up";
    }
    myTextField.text = evt.phase;

}
于 2013-09-23T07:45:31.983 回答