我正在开发JavaFX游戏,即Snake。我把我的大班分成了两个独立的 - 游戏在这个分离之前就已经完成了 - 现在我无法通过Class 2调用setOnMouseClicked事件来调用Class 1中的switch case.I' m使用了枚举类称为Direction作为我的案例。这就是我的MouseClicked事件在Class 2中的样子。
SnakeGame snakeGame = new SnakeGame();
MenuButton btnRestart = new MenuButton("RESTART");
btnRestart.setOnMouseClicked(event-> {
FadeTransition ft = new FadeTransition(Duration.seconds(0.5), this);
ft.setFromValue(1);
ft.setToValue(0);
ft.setOnFinished(evt-> setVisible(false));
snakeGame.restartFromMenu();
ft.play();
} );
我想要它做什么;是单击一个按钮,然后重新启动游戏。我正在调用类1(snakeGame)中的方法,名为restartFromMenu。看起来像这样:
public void restartFromMenu(){
setDirection(Direction.CONTINUE);
getTimeline().play();
System.out.println(getDirection());
running = true;
}
这就是开关案例的外观:
KeyFrame frame = new KeyFrame(Duration.seconds(0.2), event->{
if(!running){
return;}
switch (getDirection()){
case CONTINUE:
System.out.println("Inside Case Continue");
tail.setTranslateX(snake.lastIndexOf(tailX) + BLOCK_SIZE);
tail.setTranslateY(snake.lastIndexOf(tailY));
getTimeline().playFromStart();
break;
});
我设法在Class 1中使用另一个带有getCode()的switch case,如果我按下' P'然后它就可以从那里调用我的方法。像这样:
scene.setOnKeyPressed(event ->{
if(!moved){
return;}
switch(event.getCode()){
case P:
restartFromMenu();
break;
}
moved = false;
});
当我点击名为“重新启动”的菜单按钮时,菜单会消失,游戏将被冻结,直到我按下“P'”。由于它适用于调用我的方法,我不认为我的方法restartFromMenu是错误的。我如何制作它以便我可以从Class 2正确调用我的开关盒?