ビューの動きの方向(上、右、下、左)を変更する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