С тех пор, как я присоединился к этому сообществу, я сделал все возможное в навыках и прогрессе Вы все огромная помощь. У меня проблемы с предоставлением таймера, для которого я реализовал определенные параметры, когда он запускается и останавливается.
Я либо получаю сообщение об ошибке "таймер локальной переменной не инициализирован", либо я не получаю ошибок, но ничего не происходит. Может у меня таймер не в том месте?
Если я добавлю timer.start();
в конструктор, тоже все будет нормально, но тогда таймер должен запуститься при инициализации программы. Мне бы очень хотелось, чтобы таймер не запускался, пока не будет достигнут определенный параметр. Скажем, например, до int p1Laps=1;
, но если я помещу timer.start();
в оператор if в конструкторе (т.е. if(p1Laps>=1) { timer.start(); }
, таймер никогда не запустится.
Я пытался разместить timer.start();
в разных местах и либо не получил ответа, либо выдал ошибку об отсутствии локальной переменной timer
.
Вторая, в некоторой степени связанная проблема, с которой я столкнулся, заключается в невозможности установки каких-либо параметров для вызова timer.stop();
без получения вышеупомянутой ошибки «таймер локальной переменной не мог быть инициализирован». Я оставил timer.stop();
там, где я думаю, что он должен быть в коде, но он получает эту ошибку.
Короче говоря, я хочу, чтобы таймер мог запускаться при достижении параметра, а именно, когда игрок завершил круг. И я хочу, чтобы таймер мог остановиться, когда он достигнет значения.
Заранее спасибо за отличный совет, который я обязательно получу. Примечание: это не весь код, а просто соответствующая информация.
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
public class RacerDoom extends JFrame {
int counter = 0;
int p1Laps = 0;
public RacerDoom() {
//create JFrame
super("Racer Doom Squared");
setSize(WIDTH,HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//set up Timer
final Timer timer=new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(counter>=10) {
timer.stop(); //error here reads "local variable timer may
//not have been initialized"
}
else{
counter++;
}
System.out.println(counter);
}
});
//inner class threads
Move1 m1 = new Move1();
m1.start();
//start timer
if(p1Laps>=1) {
timer.start(); //error here is that timer will not start when
//p1Laps>=1
}
}
private class Move1 extends Thread implements KeyListener {
public void run() {
addKeyListener(this);
while(true) {
try {
repaint();
//collisions
if(p1.intersects(finishtop)&&p1Direction==UP&&p1cross!=true){
p1cross=true;
p1Laps++;
p1Boost++;
counter=0;
System.out.println(p1Laps);
}
if(p1.intersects(finishtop)==false) {
p1cross=false;
}
public static void main (String [] args) {
new RacerDoom();
}
}