1
我有4个按钮,它们改变视图的移动方向(上,右,下,左)。 运动被称为是这样的:如何防止onClick如果另一个按钮被点击之前
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()
:
@Override
public void onClick(View view) {
switch(view.getId()) {
case R.id.buttonUp:
if(direction == 'S') {
break;
}
direction = 'N';
break;
case R.id.buttonRight:
if(direction == 'W') {
break;
}
direction = 'E';
break;
case R.id.buttonDown:
if(direction == 'N') {
break;
}
direction = 'S';
break;
case R.id.buttonLeft:
if(direction == 'E') {
break;
}
direction = 'W';
break;
}
}
我如何检查其中的观点实际上移动的方向是什么?将以前的值保存在单独的变量中不起作用,因为您可以非常快地按下按钮,并且变量的值不会有正确的值。
我已经尝试添加postdelayed()
处理程序onClick()
这不起作用。
非常感谢!这对我有效。它应该是'if(lastDirection!='S')' – sininen
对,是,固定的。 – radoh