检测在Android中滑动区域

时间:2013-03-16 01:17:41

标签: android andengine

在我使用AndEngine的游戏应用程序中,我试图检测按钮Sprite上的滑动动作,当手指在按钮Sprite上方时放大按钮,并在手指滑动时将刻度设置回1.0f雪碧。含义:

  • 手指向下按钮区域
  • 向上滑动按钮(并且按钮大小调整)但保持手指向下
  • 继续滑动关闭按钮,按钮返回原始比例。

我试过以下:

myButton = new Sprite(posX, posY, resourcesManager.rightButtonRegion, vbom) {


        @Override
        public boolean onAreaTouched(final TouchEvent pAreaTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
            switch (pAreaTouchEvent.getAction()) {
            case TouchEvent.ACTION_DOWN:
                this.setScale(1.25f);
                break;

            case TouchEvent.ACTION_UP:
                this.setScale(1.0f);
                break;

            case TouchEvent.ACTION_MOVE:
                this.setScale(1.0f);
                break;

            case TouchEvent.ACTION_OUTSIDE:
                this.setScale(1.0f);
                break;

            }
            return true;
        }
    };

但是,如果我在按钮外面轻扫并将手指移到按钮上,则按钮的尺寸不会放大。欣赏任何指向如何实现这种效果的指针。如果使用SurfaceView有一个非Andengine解决方案,我也会对此有所了解。

1 个答案:

答案 0 :(得分:4)

您只能在TouchEvent.ACTION_DOWN上设置比例。当您滑入触摸区域时,它不会注册ACTION_DOWN,因为您没有按下您所在的区域,而是刚刚进入该区域。如果您的触摸序列不在case TouchEvent.ACTION_MOVE:,也许您可​​以检查第一次进入该区域时放大的ACTION_DOWN {/ 1}}。

如果这不起作用,您可以使用提供其他类型的动作事件信息的onGenericMotionEvent(MotionEvent)之类的内容。