0


0

ディスプレイに触れるとタイマーが動作する(OnTouchListener)

タイマーは正常に動作します。 問題は、ディスプレイに触れると、メソッド_dw.newgame()が実行される(2秒が経過した場合)ことです。 「OnTouchListener」と関係があるのでしょうか?

public class DrawView extends View implements OnTouchListener{
Timer timer = new Timer();

public DrawView(Context context)
{
timer.schedule(new Task(this),0, 2000);
}
public boolean onTouch(View view, MotionEvent event)
{}
}

class Task extends TimerTask
{
private DrawView _dw;
public Task(DrawView dw){ this._dw = dw;}
public void run()
{ _dw.newgame(); }
}

1 Answer


0


たぶん、 `onCreate`メソッドでタイマーを開始する必要があります:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(Bundle savedInstanceState);
    timer = new Timer();
    timer.schedule(new Task(this), 0, 2000);
}

ハンドラーでの2回目の試行:

public class DrawView extends View implements OnTouchListener{
    private Timer timer = new Timer();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(Bundle savedInstanceState);

        timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                handler.sendEmptyMessage();
            }
        }, 0, 2000);
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            newgame();
        }
    };
}

これはコンパイルしませんでしたが、このように動作するはずです。 +私は別のことに気付きました:newgame()は一度だけ呼び出されるべきだと思います。

timer.schedule(new Task(this), 0, 2000);

2秒ごとに実行します。