当用户触摸屏幕时,我正在尝试在另一个图像上绘制图像。但只有当用户触摸时,图像才会出现,然后当用户松开屏幕时,图像会消失。
这是我的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循环。
发布于 2011-07-24 00:38:05
这里有一个逻辑错误。如果上面的代码都在触摸事件处理程序中,那么看起来变量RED
对于你的方法来说是局部的。这意味着当用户每次触摸屏幕时,它被重置为0,然后再次变为1。这可能不是您想要的。
之所以只呈现它,是因为g.drawPixmap要么将一个元素提交到绘图队列,要么立即呈现它。这个绘制按钮的方法只有在你有一个触摸事件时才会被绘制!
相反,您可以将一个布尔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
,这样按钮在他们触摸屏幕时就会显示为绿色,而不是在他们抬起手指时显示为绿色。
https://stackoverflow.com/questions/6801658
复制相似问题