Кнопки со стрелками не работают в «отрицательном» направлении - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь заставить изображение двигаться вверх / вниз / влево / вправо с помощью кнопок изображения. Я могу заставить изображение двигаться вправо и вниз, однако вверх и влево не работают.

Я попытался изменить знак +/-, длину приращений для перемещения изображения, а также операторы if / else, чтобы определить, перемещать изображение или нет.

 // Move ImageView Up
 case R.id.upBtn: {
     if (img.getY() > 0) {
        img.setY(img.getY() - 25);
    }
}

// Move ImageView Down
case R.id.downBtn: {
    if (img.getY() < 950) {
        img.setY(img.getY() + 25);
    }
}

// Move ImageView Left
case R.id.leftBtn: {
    if (img.getX() > 0) {
        img.setX(img.getX() - 25);
    }
}

// Move ImageView Right
case R.id.rightBtn: {
    if (img.getX() < 2000) {
        img.setX(img.getX() + 25);
    }
}

Предполагается, что изображение будет перемещаться во всех направлениях, но не будет идти вверх или влево. Я удалил операторы if / else, чтобы проверить, не являются ли они проблемой, и они не повлияли на перемещение изображения. Они просто не дают ему сойти с экрана. Похоже, что я не могу вычесть из функции getY (), но это не имеет смысла.

1 Ответ

0 голосов
/ 19 июня 2019

Вы пропускаете операторы break, поэтому при совпадении case будет выполняться код всех следующих операторов case.

Try:

// Move ImageView Up
case R.id.upBtn: {
     if (img.getY() > 0) {
        img.setY(img.getY() - 25);
    }
}
break;

// Move ImageView Down
case R.id.downBtn: {
    if (img.getY() < 950) {
        img.setY(img.getY() + 25);
    }
}
break;

// Move ImageView Left
case R.id.leftBtn: {
    if (img.getX() > 0) {
        img.setX(img.getX() - 25);
    }
}
break;

// Move ImageView Right
case R.id.rightBtn: {
    if (img.getX() < 2000) {
        img.setX(img.getX() + 25);
    }
}
break;

default : 
...