Изменить текст из метода start () в другом классе - PullRequest
1 голос
/ 10 октября 2019

Я хочу использовать таймер в своей игре, но я не знаю, куда мне поместить (или как его разработать) код, который будет обновлять текст каждую секунду.

В этот момент я 'Я использую обработчик события onMouseMoved для обновления текста, но я хочу, чтобы он запускался без зависимости от мыши

Основной класс:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        Text textTimer = new Text(x,y,"string");
        numberHandler.timer.scheduleAtFixedRate(numberHandler.startCounting, 0, 1000);
        ...
    }
}

Класс с таймером:

public class numberHandler {
    int timePassed = 0;
    Timer timer = new Timer();
    TimerTask startCounting = new TimerTask() {
        @Override
        public void run() {
            timePassed++;
        }
    };
}

1 Ответ

2 голосов
/ 10 октября 2019

Вы можете использовать таймер анимации из JFX


public class NumberHandler{
   private StringProperty text = new SimpleStringProperty();
   private LongProperty elapsedTime = new SimpleLongProperty(0);
   private IntegerProperty seconds = new SimpleIntegerProperty(0);
   private AnimationTimer timer = new AnimationTimer() {

            @Override
            public void handle(long now) {
                //now is time in Nano seconds
                // to get one second devide by 10^9 
                if((now-elapsedTime.get())/1_000_000_000L > 1){
                  secongs.set(seconds.get()+1);
                  text.set("Time: " + secounds);

                }
            }
        };

      public StringProperty getText(){
         return text;
      }
      public void startTimer(){
         timer.play();
      }

}

В пользовательском интерфейсе вы должны привязать текст.

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        NumberHandler numberHandler = new NumberHander();
        Text textTimer = new Text(x,y,"string");
        textTimer.textproperty.bind(humberHandler.getText());
        numberHandler.startTimer();
    }
}

Это всего лишь подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...