OnTouchEvent更新值问题Android

时间:2015-10-25 18:32:02

标签: android geometry ontouchevent

朋友们好,
我做了一个游戏,你需要按一个球,球增加他的大小。 现在我的问题是,当我调用onTouchEvent并调用函数increaseRadius()时,当手指在屏幕上移动时,它会更新我的值,但是如果我将手指放置而不移动它将更新一次值。 我希望即使玩家将手指放在相同的坐标上(比如更新循环),该值也会更新。 只有当手指移动时,onTouchListener才能完美工作,否则只能工作一次。

这里的'短'代码:

public boolean onTouchEvent(MotionEvent event)
{
    if(userball.getRadius()<screenWidth/4)
    {
       userball.increaseRadius();
    }
}
public void increaseRadius()
{
    this.radius+=screenWidth*0.002;
}

这些功能没有与问题无关的东西。 如果玩家没有移动他的手指,我将如何更改球会更新并增加他的尺寸?

我希望在整个播放器的手指在同一坐标上的屏幕上(如同循环播放)时,该值会更新。

1 个答案:

答案 0 :(得分:1)

使用if语句检查玩家是否只放他/她的手指:

if (event.getAction() == MotionEvent.ACTION_DOWN) {

}

同样,如果你想听拖拽事件,请写下你的if语句:

if (event.getAction() == MotionEvent.ACTION_MOVE) {

}

只要用户的手指正在触摸,为了让进程继续进行,您可以启动一个线程,如下例所示:

if (event.getAction() == MotionEvent.ACTION_DOWN) {
    IncreaseSizeThread increaseSizeThread = new IncreaseSizeThread();
}

if (event.getAction() == MotionEvent.ACTION_UP) {
    increaseSizeThread.stop(); 
    //A better way would be to change a variable that gets the while loop in     
    //the thread going to false e.g. keepGoing = false;

}

线程的内容可能是:

class IncreaseSizeThread extends Thread {

    public IncreaseSizeThread() {
    }

    void run(){
        while(keepGoing){
            //Size++;
        }

    }
}