【问题标题】:Java programming help and android developmentJava编程帮助和android开发
【发布时间】:2011-07-23 16:10:25
【问题描述】:

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

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

【问题讨论】:

  • 听起来您希望图像在他们触摸时出现,并且即使在他们松开后仍留在屏幕上?

标签: java android image if-statement touch-event


【解决方案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,这样当他们触摸屏幕时按钮就会显示为绿色,而不是当他们抬起手指时。

【讨论】:

  • 我试过了,在我点击之前它都不会绘制,当我点击它时它会绘制一个并立即将其删除任何其他建议?
  • 听起来你没有看到inside your main rendering loop rather than in the touch event handler put 部分。这里的原因是,在您绘制所有内容的主渲染循环中,您总是需要提交一个按钮来绘制,无论它是绿色的还是其他的。如果你告诉它在你的触摸事件处理程序中绘制按钮,那么它只会在你触摸时绘制按钮,并在下一帧刷新画布时将其移除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
相关资源
最近更新 更多