在Android中通过手指拖动控制XY移动

时间:2013-01-24 11:07:06

标签: java android touch andengine

我目前正在使用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值根据我的手指在屏幕上的位置而增加/减少。我做错了吗?

1 个答案:

答案 0 :(得分:1)

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

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

请同时查看Android中的手势:

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

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