Question

La minuterie fonctionne très bien. Le problème est que la méthode _dw.newgame () juste faire exécuter (si deux secondes sont plus) si je touche l'écran. Peut-être qu'il a qqch à voir avec le « 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(); } }

Était-ce utile?

La solution

Peut-être que vous devriez commencer la minuterie dans la méthode onCreate:

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

deuxième essai avec gestionnaire:

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();
        }
    };
}

Je ne compile pas cela, mais il devrait fonctionner comme ça.
J'ai remarqué une autre chose: je suppose NewGame () ne doit être appelée une fois.

timer.schedule(new Task(this), 0, 2000);
fait ça tous les 2 secondes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top