朋友们好,
我做了一个游戏,你需要按一个球,球增加他的大小。
现在我的问题是,当我调用onTouchEvent并调用函数increaseRadius()时,当手指在屏幕上移动时,它会更新我的值,但是如果我将手指放置而不移动它将更新一次值。
我希望即使玩家将手指放在相同的坐标上(比如更新循环),该值也会更新。
只有当手指移动时,onTouchListener才能完美工作,否则只能工作一次。
这里的'短'代码:
public boolean onTouchEvent(MotionEvent event)
{
if(userball.getRadius()<screenWidth/4)
{
userball.increaseRadius();
}
}
public void increaseRadius()
{
this.radius+=screenWidth*0.002;
}
这些功能没有与问题无关的东西。 如果玩家没有移动他的手指,我将如何更改球会更新并增加他的尺寸?
我希望在整个播放器的手指在同一坐标上的屏幕上(如同循环播放)时,该值会更新。
答案 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++;
}
}
}