javafx - 一对在游戏菜单中
问题描述
我正在尝试使用 javafx 创建游戏菜单。我现在有可用的首页。我有几个项目可以引导我进入下一个场景。
我用 :
private List<Pair<String, Runnable>> menuData = Arrays.asList(
new Pair<String, Runnable>("Un Joueur", OptionMenu::),
new Pair<String, Runnable>("Multijoueuer", () -> {}),
new Pair<String, Runnable>("Options du jeu", () -> {}),
new Pair<String, Runnable>("Quitter",Platform::exit)
);
创建我的项目和 Platform::exit 到几乎所有的东西。
问题是:如何创建一个像我的 OptionMenu::这样的 Runnable ,它可以引导我进入下一个扩展应用程序的页面。我希望它接近那个:
public abstract static class OptionMenu extends Application implements Runnable{
///////// définition de la taille du menu ///////////
private static final int WIDTH = 1324;
private static final int HEIGHT = 604;
/////////////////////////////////////////////////////
//////// création des differents clicables //////////
private List<Pair<String, Runnable>> menuData = Arrays.asList(
new Pair<String, Runnable>("Un Joueur", () -> {}),
new Pair<String, Runnable>("Multijoueuer", () -> {}),
new Pair<String, Runnable>("Options du jeu", () -> {}),
new Pair<String, Runnable>("Quitter",Platform::exit)
);
//////////////////////////////////////////////////////
private Pane root = new Pane();
private VBox menuBox = new VBox(-5);
private void addBackground(){
ImageView imageView = new ImageView(new Image(getClass().getResource("MenuImages/bkground.jpg").toExternalForm()));
imageView.setFitWidth(WIDTH);
imageView.setFitHeight(HEIGHT);
root.getChildren().add(imageView);
}
private void addTitle() {
BomberBallTitle title = new BomberBallTitle("Options du jeu");
title.setTranslateX(WIDTH / 2 - title.getTitleWidth() / 2);
title.setTranslateY(HEIGHT / 3);
root.getChildren().add(title);
}
private void addMenu(double x, double y) {
menuBox.setTranslateX(x);
menuBox.setTranslateY(y);
menuData.forEach(data -> {
BomberBallMenuItem item = new BomberBallMenuItem(data.getKey());
item.setOnAction(data.getValue());
item.setTranslateX(-300);
Rectangle clip = new Rectangle(300, 30);
clip.translateXProperty().bind(item.translateXProperty().negate());
item.setClip(clip);
menuBox.getChildren().addAll(item);
});
root.getChildren().add(menuBox);
}
private Parent createContent() {
addBackground();
addTitle();
double lineX = WIDTH / 2 - 100;
double lineY = HEIGHT / 3 + 50;
addMenu(lineX + 5, lineY + 5);
return root;
}
public void run() {
launch();
}
@Override
public void start(Stage primaryStage) throws Exception{
Scene scene = new Scene(createContent());
primaryStage.setTitle("BomberBall Menu");
primaryStage.setScene(scene);
primaryStage.show();
}
解决方案
推荐阅读
- google-cloud-platform - Dataprep - 将数据附加到 BigQuery 表
- json - Python 3 - 从嵌套字典中的键中提取值
- c# - Swagger UI - 在不同控制器下显示端点
- python - python中的方位角计算(没有地理定位库)
- r - 根据数据框中两个不同列之间的匹配删除行
- python - 如何修复“ValueError:color kwarg 每个数据集必须有一种颜色。提供了 4 个数据集和 1 种颜色”?
- reactjs - 在目标“FBReactNativeSpec”和“Yoga”之间循环依赖;建筑可能会产生不可靠的结果
- python - ipynb 到 py,将所有带有 name* 的文件移动到文件夹
- symfony - 如何在 Symfony Configuration.php 中定义一组标量数组?
- android - Kotlin Unresolved Reference 和类函数未出现在自动完成选择中