Java 如果以前单击过其他按钮,如何防止onClick
我有4个按钮可以改变视图的移动方向(上、右、下、左)。 这场运动被称为:Java 如果以前单击过其他按钮,如何防止onClick,java,android,Java,Android,我有4个按钮可以改变视图的移动方向(上、右、下、左)。 这场运动被称为: handler.postDelayed(new Runnable() { @Override public void run() { move(); handler.postDelayed(this, delay); } }, delay); 我想防止用户改变方向,如果以前的方向是相反的。但在我的应用程序中,当你向右移动时,按
handler.postDelayed(new Runnable() {
@Override
public void run() {
move();
handler.postDelayed(this, delay);
}
}, delay);
我想防止用户改变方向,如果以前的方向是相反的。但在我的应用程序中,当你向右移动时,按下向上键,然后快速向左移动,这会导致视图向左移动。在这种情况下,理想的行为是视图向上移动,而不是向左移动
这就是move()
的样子:
public void move() {
switch(direction) {
case 'N': moveUp();
break;
case 'E': moveRight();
break;
case 'S': moveDown();
break;
case 'W': moveLeft();
break;
}
}
这是onClick()
:
如何检查视图实际移动的方向?将上一个值保存在单独的变量中不起作用,因为您只需快速按下按钮,变量的值就不会有正确的值
我已经尝试为
onClick()
添加了一个带有postdelayed()
的处理程序,但没有成功。诀窍是在实际的move()
方法中保存上一个移动方向。因此,您的move()
方法可能如下所示:
public void move() {
switch(direction) {
case 'N': if (lastDirection != 'S') moveUp();
break;
...
}
lastDirection = direction;
}
哦,请为方向创建一个枚举。你会发现它比Chars好得多。诀窍是在实际的
move()
方法中保存上一个移动方向。因此,您的move()
方法可能如下所示:
public void move() {
switch(direction) {
case 'N': if (lastDirection != 'S') moveUp();
break;
...
}
lastDirection = direction;
}
哦,请为方向创建一个枚举。您会发现它比Chars好用得多。非常感谢!这对我有用。它应该是
if(lastDirection!=“S”)
Right,sry,fixed。非常感谢!这对我有用。它应该是if(lastDirection!=“S”)
Right,sry,fixed。