Справка по Java-программированию и разработка Android

1

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

Это мой метод if:

int RED = 0;
int GREEN = 1;
Graphics g = game.getGraphics();
int len = touchEvents.size();

if (RED == 0) {
    ready = Assets.readybtntwo;
}

for(int i = 0; i < len; i++) {
    TouchEvent event = touchEvents.get(i);

    if(event.type == TouchEvent.TOUCH_UP){
        updateWaiting(touchEvents);
        RED +=1;

        if (RED == 0)
            ready = Assets.readybtntwo;

        if(RED == 1)
            ready = Assets.readybtngreentwo;
    }

    g.drawPixmap(ready, 0, 0);
}

Извините, я использую фреймворк, созданный из игр, начинающихся с Android. Но это не имеет значения, я хочу, чтобы изображение оставалось навсегда и завершало цикл if.

  • 0
    Какой у Вас вопрос?
  • 0
    Похоже, вы хотите, чтобы изображение появлялось, когда они касались, и оставалось на экране даже после того, как они отпустили?
Теги:
if-statement
image
ontouchevent

1 ответ

1
Лучший ответ

У вас здесь логическая ошибка. Похоже, что переменная RED является локальной для вашего метода, если вышеуказанный код находится внутри обработчика событий касания. Это означает, что когда пользователь коснется экрана каждый раз, когда он сбрасывается на 0, а затем снова становится 1. Это, вероятно, не то, что вы хотите.

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

Вместо этого вы можете иметь значение boolean drawGreenReadyButton как член класса, т.е.

private boolean drawGreenReadyButton = false;

Затем вы можете изменить эту внутреннюю инструкцию if следующим образом:

if(event.type == TouchEvent.TOUCH_UP){
    updateWaiting(touchEvents);
    drawGreenReadyButton = true;
}

И внутри вашего основного цикла рендеринга, а не в обработчике события касания:

if(drawGreenReadyButton) {
    g.drawPixmap(Assets.readybtngreentwo, 0, 0);
} else {
    g.drawPixmap(Assets.readybtntwo, 0, 0);
}

Кроме того, рассмотрите возможность использования TouchEvent.TOUCH_DOWN а не TouchEvent.TOUCH_UP, чтобы кнопка отображалась зеленым, как только они касаются экрана, а не когда они поднимают палец вверх.

  • 0
    Я попробовал это, и он не рисует ни до тех пор, пока я не нажму, а когда я нажму, он потянет один и сразу же снимет другие предложения?
  • 0
    Похоже, вы не видели inside your main rendering loop rather than in the touch event handler put . Причина заключается в том, что в вашем основном цикле рендеринга, где вы рисуете все, вам всегда нужно отправить кнопку для рисования, будь то зеленая или другая. Если вы скажете ему нарисовать кнопку в вашем обработчике событий касания, тогда она будет рисовать кнопку только при касании и удалит ее, когда холст обновится в следующем кадре.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню