Для школьного задания мы должны запрограммировать маленькую игру со змеями. Все работает нормально, но время от времени экран конца игры не отображается и выдает эту ошибку:
09 июня 2019 г. 23:25:27 javafx.scene.CssStyleHelper CalculateValue
ВНИМАНИЕ: Не удалось разрешить '-fx-text-background-color' при разрешении поиска для '-fx-text-fill' из правила '* .label' в таблице стилей jrt: /javafx.controls/com/sun/javafx/scene /control/skin/modena/modena.bss
Это кажется мне странным, поскольку Он не делает это постоянно, просто время от времени. У меня вопрос, что означает эта ошибка и, возможно, как ее исправить. Я не могу показать код, так как моя школа довольно строго относится к распределению заданий, но я надеюсь, что этой информации будет достаточно, чтобы хотя бы сообщить мне, в чем причина этой ошибки.
Я добавил несколько примеров ниже, возможно, он не сможет дать точную репликацию, но он дает некоторые идеи относительно того, что я делаю.
Другой полезной информацией может быть то, что DrawPane постоянно обновляется с помощью AnimationTimer.
import controller.Controller;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
public class GameOverScene extends FlowPane {
private Label timeAlive;
// constructor
public GameOverScene(Controller controller) {
setAlignment(Pos.TOP_CENTER);
setBackground(new Background(new BackgroundFill(Color.rgb(197, 0, 41), null, null)));
VBox content = new VBox();
content.setAlignment(Pos.TOP_CENTER);
Label gameOverMessage = new Label("Game Over");
gameOverMessage.setFont(new Font("Arial", 40));
timeAlive = new Label(controller.getTimerTime());
timeAlive.setFont(new Font("Arial", 35));
timeAlive.setTextFill(Color.WHITE);
content.getChildren().addAll(gameOverMessage, timeAlive);
getChildren().add(content);
}
public void setTimerTime(String time) {
timeAlive.setText(time);
}
}
public class GameScene extends Scene {
// variables
private DrawPane drawPane;
private BorderPane root;
private DashBoard dashBoardPane;
private GameOverScene gameOver;
private Controller controller;
// constructor
public GameScene(double width, double height, Controller controller, Game game) {
super(new Pane());
this.controller = controller;
root = new BorderPane();
drawPane = new DrawPane(this, game);
dashBoardPane = new DashBoard(controller);
gameOver = new GameOverScene(controller);
root.setCenter(drawPane);
root.setBottom(dashBoardPane);
setRoot(root);
}
public void switchToGameOver() {
gameOver.setTimerTime(controller.getTimerTime());
setRoot(gameOver);
}
}