繁体   English   中英

Java编程帮助和android开发

[英]Java programming help and android development

当用户触摸屏幕时,我试图在另一个图像上绘制一个图像。 但是图像仅在用户触摸时出现,然后在用户放开屏幕时消失。

这是我的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要么将元素提交到绘制队列,要么立即渲染它。 仅在发生触摸事件时才会绘制此按钮绘制方法!

相反,您可以将boolean drawGreenReadyButton值作为类成员,即

private boolean drawGreenReadyButton = false;

然后,您可以将该内部if语句更改为以下内容:

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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM