Проблемы с экранным джойстиком Android

Итак, я пытаюсь создать игру с экранным джойстиком, который перемещает растровое изображение по экрану. Но когда я удерживаю джойстик в любом направлении и держу его там, растровое изображение также перестанет двигаться. Только когда я перемещаю джойстик, растровое изображение перемещается. По сути, я хочу иметь возможность удерживать джойстик, скажем, в левом положении, и растровое изображение перемещается влево, пока я не отпущу. Все остальное в коде работает. Какие-либо предложения?

public boolean onTouch(View v, MotionEvent event) { 
        if (event.getAction() == MotionEvent.ACTION_DOWN)
            _dragging = true;
        else if (event.getAction() == MotionEvent.ACTION_UP)
            _dragging = false;

        _touchingPoint = new Point();

        if (_dragging) {
            // get the pos
            int x = (int) event.getX();
            int y = (int) event.getY();
            _touchingPoint.x = x;
            _touchingPoint.y = y;

            double a = _touchingPoint.x - initx;
            double b = _touchingPoint.y - inity;
            controllerDistance = Math.sqrt((a * a) + (b * b));

            if (controllerDistance > 75) {
                a = (a / controllerDistance) * 75;
                b = (b / controllerDistance) * 75;
                _touchingPoint.x = (int) a + initx;
                _touchingPoint.y = (int) b + inity;
            }

            bitmapPoint.x += a * .05;
            bitmapPoint.y += b * .05;

        } else if (!_dragging) {
            // Snap back to center when the joystick is released
            _touchingPoint.x = initx;
            _touchingPoint.y = inity;
        }
}

person zkello    schedule 17.07.2012    source источник


Ответы (2)


Попробуйте это. Это API с открытым исходным кодом для экранного джойстика для Android.

person Dhiral Pandya    schedule 14.06.2013
comment
Эта библиотека отлично работает при некотором терпении. НЕ загружайте файл Jar, он устарел из источника SVN. Следуйте инструкциям и используйте расширенный метод, и джойстик будет работать без ошибок. Левая/правая метки неправильные, но это легко исправить. Кроме того, убедитесь, что вы установили ширину и высоту в макете XML. Также используйте это для элемента XML: ‹com.zerokol.views.JoystickView - person Andy; 04.03.2015

Это было потому, что у меня был только код для увеличения местоположения растровых изображений в методе onTouch. Когда к экрану прикасаются, но не двигают, событие не регистрируется. Код ниже должен быть вне метода onTouch.

bitmapPoint.x += a * .05;
bitmapPoint.y += b * .05;
person zkello    schedule 20.07.2012
comment
Это нужно для перемещения растрового изображения, поэтому оно выглядит так: _touchingPoint.x = (int) a + initx; _touchingPoint.y = (int) b + inity; - person Andy; 08.12.2014