Как узнать, когда палка отпущена

У меня проблема с проверкой отпускания стика в моем геймпаде (XBox). С кнопками, когда я нажимаю первую, я получаю pollData = 1.0, а после отпускания получаю pollData = 0.0.

С аналоговыми стиками у меня нет такого события, как pollData = 0.0

Заранее спасибо за помощь!


person MAGx2    schedule 09.01.2014    source источник
comment
Я думаю, вам нужно получить оси x и y джойстика, чтобы увидеть, находятся ли они на 0%. Я считаю, что вы можете вызвать метод getXAxisPercentage(), чтобы вернуть это. В этом блоге может быть полезная информация: theuzo007. .wordpress.com/2012/09/02/джойстик-в-java-с-jinput   -  person CodeChimp    schedule 09.01.2014


Ответы (1)


Учитывая, что у вас уже есть ось в качестве

Component component;

(чтобы убедиться, что это ось, проверив

if(component.isAnalog())

то вы можете получить позицию, позвонив

component.getPollData()

Возвращаемое значение будет находиться в диапазоне от -1 до 1. -1 — слева/внизу, +1 — справа/вверху, в зависимости от того, равен ли component.getIdentifier() Component.Identifier.Axis.X или Component.Identifier.Axis.Y.

Таким образом, вы можете сделать что-то вроде

bool xReleased = false, yReleased = false;
Component[] components = controller.getComponents();
for(Component component : components) {
    if(component.isAnalog()) { //test that controller is analog
        Identifier id = component.getIdentifier();
        float axisPosition = component.getPollData(); //range: -1 to 1
        if(id == Component.Identifier.Axis.X && axisPosition == 0)
            xReleased = true;
        if(id == Component.Identifier.Axis.Y && axisPosition == 0)
            yReleased = true;
    }
}

if(xReleased && yReleased) {
    //do something...
}
person B. M. Knecht    schedule 09.01.2014