Witam
Tworzę grę w NB (puzzle) w której znajduje się stoper. Grę rozpoczyna się poprzez kliknięcie przycisku "wymieszaj" a kończy po ułożeniu całej układanki poprzez użycie funkcji timer.cancel();. Przy takim działaniu stoper działa prawidłowo.
Problem występuje w przypadku gdy w trakcie gry (w trakcie pracy stopera) ponownie zostanie wciśnięty przycisk wymieszaj. Wówczas stoper mierzy na przemian pierwszy jak i drugi czas np. jeśli zostanie kliknięty przycisk w 3s to wyświetlane są następujące wartość: 0 3 1 4 2 5 3 6 itd.
Próbowałem umieścić w przycisku najpierw funkcję cancel a po niej ponowne wystartować stoper ale program się wysypuje. Prosiłbym o jasną podpowiedź bo szczerze to funkcja schedule jak i timetask są zbyt mocno rozbudowane jak dla mnie.
Z góry dziękuję za pomoc :)
Kod stopera:
public void stoper()
{
final long rozpocznij;
timer = new Timer();
rozpocznij = System.currentTimeMillis()/1000;
timer.schedule(
new TimerTask()
{
public void run()
{
long s, m;
s=0;
m=0;
s = System.currentTimeMillis()/1000 - rozpocznij;
if(s<60)
{
time.setText(" czas: "+s+"s");
}
else
{
m = s/60;
s = s%60;
time.setText(" czas: "+m+"min "+s+"s");
}
}
}, 0, 1000);
}