나는 안드로이드 게임을 쓰고 있습니다. 메인 게임 화면에는 카운트 다운 타이머가 있으며 0에 도달하면 게임이 끝납니다. 아래 코드는 사용자가 처음으로 레벨을 재생할 때 작동합니다. 그러나 사용자가 두 번째 레벨을 재생할 때마다 약 5 번 씩, 생성 된 숫자는 무작위가됩니다. 예를 들어, 30에서 시작한 다음 -15로 이동했습니다. 누구든지이 일을하는 이유를 제안 할 수 있습니까? 그 숫자는 그냥 최대 이동 한 후이 클래스마다 시간을 인스턴스화하지 않는 경우게임용 타이머는 카운트 다운 대신에 난수를 생성합니다.
public class Timer1 {
int time = 120;
int counter = 0;
int startTime = 30; // Change to 2 minutes
Timer timer;
boolean end = false;
World world = new World();
public Timer1() {
}
public void subtractTime() {
startTime = startTime - 15; // Knock off 15 seconds for hint
}
public int getTime() {
return time;
}
public void startTimer() {
timer = new Timer();
time = 120;
startTime = 30;
end = false;
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
counter++;
time = startTime - counter;
if (time == 0) {
world.gameOver = true;
end = true;
timerCancel();
}
}
}, 0, 1000);
}
public void timerCancel() {
timer.cancel();
}
}
은 스레드 유형의 TimerTask입니까? 그러면 문제가되어야합니다. –