Как предотвратить задержку при перемещении круга с помощью AnimationTimer в JavaFX?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как предотвратить задержку при перемещении круга с помощью AnimationTimer в JavaFX?

Сообщение Anonymous »

У меня проблема с классом AnimationTimer, я использую его для перемещения круга (шара).
Когда я запускаю программу (это игра в понг), мяч остановился на мгновение (0,5-1 секунду), а затем продолжил его движение (движение мяча очень медленное)
это основной класс контроллера

Код: Выделить всё

package com.anas.pong;

import javafx.animation.AnimationTimer;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;

import java.net.URL;
import java.util.ResourceBundle;

public class MainController implements Initializable {
private enum MoveTo {
bottomLeft,
topLeft,
topRight,
bottomRight
}
private MoveTo where;
private Circle ball;
int ballX, ballY;

@FXML
private AnchorPane mainPane;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {

// setting the ball
ball = new Circle();
ball.setRadius(13);
ball.setStroke(Color.BLACK);
ball.setFill(Color.BLACK);

// setting position of the ball
ball.setLayoutX(400);
ballX = 400;
ball.setLayoutY(300);
ballY = 300;

mainPane.getChildren().add(ball);

where = MoveTo.bottomLeft;

AnimationTimer movement = new AnimationTimer() {
@Override
public void handle(long l) {
// moving to ...
if (where.equals(MoveTo.bottomLeft))
bottomLeftMovement();
else if (where.equals(MoveTo.topLeft))
topLeftMovement();
else if (where.equals(MoveTo.topRight))
topRightMovement();
else if (where.equals(MoveTo.bottomRight))
bottomRightMovement();
else {
System.out.println("Nothing");
stop();
}
}
};

movement.start();
}

private void bottomLeftMovement() {

// go bottom
ball.setTranslateY(ball.getTranslateY()+2);
ballY += 2;

// go left
ball.setTranslateX(ball.getTranslateX()-2);
ballX -= 2;

if (ballY >= 600-13)
where = MoveTo.topLeft;

else if (ballX 

Подробнее здесь: [url]https://stackoverflow.com/questions/79055947/how-to-prevent-lag-when-moving-a-circle-with-an-animationtimer-in-javafx[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как предотвратить задержку при перемещении круга с помощью AnimationTimer в JavaFX?
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как предотвратить задержку при перемещении круга с помощью AnimationTimer в JavaFX?
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Переход метки с помощью AnimationTimer в javafx
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Переход метки с помощью AnimationTimer в javafx
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Переход метки с помощью AnimationTimer в javafx
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»