JAVA Timer

0

Witam

Wiem, że jest w Java coś takiego jak TimerTask, ale chciałem się spytać jak to działa. Czy mam może do dyspozycji jakąś metodę "run" ? wewnątrz której wszystko jest odświeżane ileś x na sekundę - dzięki czemu mógłbym uzyskać ruch w grze ? Wiem, że takie coś miałem do dyspozycji w Delphi.

0

Osobiście nie tworzyłem czegoś takiego, ale wykorzystywałem już gotową implementację. Zerknij, może ci się przydać.

//Timer
https://github.com/nicolasgramlich/AndEngine/blob/GLES2/src/org/andengine/engine/handler/timer/TimerHandler.java

//LimitedFPSEngine, działa dokładnie tak jak opisałeś.
https://github.com/nicolasgramlich/AndEngine/blob/GLES2/src/org/andengine/engine/LimitedFPSEngine.java

0
//tworzysz Timer
Timer timer = new Timer( );
//tworzysz zadanie
TimerTask task = new Zadanie();
//podajesz harmonogram wykonywania https://docs.oracle.com/javase/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-
timer.schedule(task,2000,500);
0

Dziękuję za odpowiedzi. Pierwsza jest zbyt skomplikowana a mi potrzebny 1-metodowy przykład.

Bogdans - z tego co sprawdziłem pod linkiem, który podałeś to wywołujesz przeciążoną metodę schedule z parametrami long delay i long period.

Rozumiem, że to trwa tylko przez czas wyznaczony w long period - a ja chciałbym, żeby wszystko co znajduje się w tej metodzie było odświeżane ileś razy w sekundzie ciągle - przez cały czas działania programu.

1

Źle rozumiesz, fragment dokumentacji:

public void schedule(TimerTask task,long delay,long period)
...
    delay - delay in milliseconds before task is to be executed.
    period - time in milliseconds between successive task executions.

Jak chcesz np. uzyskać odświeżanie 1000 razy w czasie sekundy - bez początkowego opóźnienia, to

timer.schedule(task,0,1);

Ogólnie, jeśli chcesz odświeżać k razy w ciągu sekundy, to

timer.schedule(task,0,1000/k);

1 użytkowników online, w tym zalogowanych: 0, gości: 1