【问题标题】:Controlling XY Movement by finger dragging in Android在 Android 中通过手指拖动控制 XY 运动
【发布时间】:2013-01-24 11:07:05
【问题描述】:

我目前正在使用 AndEngine 在 Android 上制作 2D 滚动射击游戏,但我遇到了相对触摸控制的问题,它允许玩家通过向上/向下/向左/向右拖动手指来控制精灵来移动船并且飞船应该像通过触摸板控制指针一样移动到与手指相同的方向(这在现在的触摸屏Space Invader类游戏中很常见)

所以我想出了这个代码,

float oldX, oldY;
float X, Y;
        public boolean onSceneTouchEvent(Scene pScene,
                TouchEvent pSceneTouchEvent) {



            if(pSceneTouchEvent.isActionMove()){
                float currentX = pSceneTouchEvent.getX();
                float currentY = pSceneTouchEvent.getY();

                float deltaX = currentX-oldX;
                float deltaY = currentY-oldY;

                System.out.println("X: " + X + " Y: " + Y);

                X= X + deltaX;
                Y= Y + deltaY;

                oldX = currentX;
                oldY = currentY;
            }
            return true;
        }

我遇到的问题是我将用于设置屏幕上精灵位置的变量 X,Y 不会根据我的手指移动而增加/减少,如果我连续拖动手指右侧,X 值应该不断增加,当我向左拖动手指时,X 值也应该不断减小。但我所拥有的是 X 值根据我手指在屏幕上的位置而增加/减少。我做错了什么吗?

【问题讨论】:

  • 请澄清 - 您在屏幕上拖动,并且位置值 不是 增加/减少?
  • 实际上它在我希望的方向上增加/减少,但是当我抬起手指并开始向同一方向再次滑动时,值变回并再次开始增加当我继续滑动它直到到达屏幕边缘时。所以我的值最大约为 400,我希望它会增加,只要我继续向同一方向滑动它,而当我抬起手指并继续滑动时数字不会变回。
  • 其实这就是我正在寻找的,我只是在寻找在 Android 上做同样事情的最佳方式stackoverflow.com/questions/11858522/…

标签: java android touch andengine


【解决方案1】:

我猜平板电脑无法组合多次扫描。水平扫动通常是一个手势,而不是一个动作。

我认为你应该在停止扫描时设置指针的位置,这样你就可以重新开始新的扫描了。

还请看一下 Android 中的手势:

http://mobile.tutsplus.com/tutorials/android/android-gesture/ http://www.anddev.org/gesturedetector_and_gesturedetectorongesturelistener-t3204.html

OnGestureListener 中有一个 onScroll(args) 方法,可以帮助你节省时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多