当用户触摸屏幕时,我正在尝试通过另一个图像绘制图像。但是,只有当用户触摸然后放开屏幕时,图像才会出现。

这是我的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循环。

有帮助吗?

解决方案

您在这里有逻辑错误。看起来像变量 RED 如果上述代码全部都在触摸事件处理程序内部,则是您方法的本地。这意味着,当用户每次重置为0时触摸屏幕时,然后再次变为1。这可能不是您想要的。

它唯一呈现的原因是G.DrawPixMap将提交元素到绘制队列或立即呈现。只有在您有触摸事件时,绘制按钮的方法才会被绘制!

取而代

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, ,这样一旦触摸屏幕,就会显示纽扣绿色,而不是抬起手指时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top