Вопрос

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

Это мой метод, если:

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. Но это не должно иметь значения, я хочу, чтобы изображение оставалось навсегда и прекратило петлю, если.

Это было полезно?

Решение

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

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

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

private boolean drawGreenReadyButton = false;

Затем вы можете изменить это внутреннее, если оператор на следующее:

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top