首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java编程帮助和android开发

Java编程帮助和android开发
EN

Stack Overflow用户
提问于 2011-07-24 00:10:26
回答 1查看 278关注 0票数 1

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

这是我的if方法:

代码语言:javascript
运行
复制
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循环。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-24 00:38:05

这里有一个逻辑错误。如果上面的代码都在触摸事件处理程序中,那么看起来变量RED对于你的方法来说是局部的。这意味着当用户每次触摸屏幕时,它被重置为0,然后再次变为1。这可能不是您想要的。

之所以只呈现它,是因为g.drawPixmap要么将一个元素提交到绘图队列,要么立即呈现它。这个绘制按钮的方法只有在你有一个触摸事件时才会被绘制!

相反,您可以将一个布尔drawGreenReadyButton值作为类成员,即

代码语言:javascript
运行
复制
private boolean drawGreenReadyButton = false;

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

代码语言:javascript
运行
复制
if(event.type == TouchEvent.TOUCH_UP){
    updateWaiting(touchEvents);
    drawGreenReadyButton = true;
}

在你的主渲染循环中,而不是在触摸事件处理程序中:

代码语言:javascript
运行
复制
if(drawGreenReadyButton) {
    g.drawPixmap(Assets.readybtngreentwo, 0, 0);
} else {
    g.drawPixmap(Assets.readybtntwo, 0, 0);
}

此外,请考虑使用TouchEvent.TOUCH_DOWN而不是TouchEvent.TOUCH_UP,这样按钮在他们触摸屏幕时就会显示为绿色,而不是在他们抬起手指时显示为绿色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6801658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档