FeathersPerSec fps = new FeathersPerSec();
public void start(Stage primaryStage)
{
double getFeathers = fps.getNumOfFeathers();
//double setFeathers = fps.setNumOfFeathers(1);
double click = 1;
GridPane pane = new GridPane();
Image image = new Image("dancingChicken.gif");
Button chickenClick = new Button();
Label feathers = new Label("FPS " + click);
chickenClick.setGraphic(new ImageView(image));
chickenClick.setOnAction((e) -> {
click++;
feathers = new Label("FPS" + click);
});
这是我的程序的一部分,我试图制作一个cookie clicker类型的游戏。除了鸡和羽毛。我试图这样做,当用户点击图像按钮时,羽毛的数量将增加1。我不知道我应该把什么放在setOnAction中。在我目前的设置中,我不断得到一个“在一个封闭范围内定义的局部变量羽毛必须是最终的或有效的最终。”
答案 0 :(得分:0)
您需要更新当前标签的文字,而不是创建新标签(不属于您的场景图)。
此外,您无法更改lambda表达式中的局部变量(在lambda表达式中访问的局部变量必须是final或有效最终(意味着它们只能被赋值一次)) 。最简单的解决方法是将click
移动到实例变量:
private FeathersPerSec fps = new FeathersPerSec();
private double click ;
public void start(Stage primaryStage)
{
double getFeathers = fps.getNumOfFeathers();
//double setFeathers = fps.setNumOfFeathers(1);
click = 1;
GridPane pane = new GridPane();
Image image = new Image("dancingChicken.gif");
Button chickenClick = new Button();
Label feathers = new Label("FPS " + click);
chickenClick.setGraphic(new ImageView(image));
chickenClick.setOnAction((e) -> {
click++;
feathers.setText("FPS" + click);
});
}