저는 Scene Builder를 사용하여 JavaFX의 침입자 게임을 작업하고 있습니다. (저는 비행기를 오 대포로 쏘아 야합니다.)하지만 나는 람다 함수에 문제가 있습니다.JavaFX8에서 FXML이있는 Lambda 함수
장면 작성기의 옵션 (실행 중)을 통해 코드를 연결하면 작동하지만 람다 함수를 사용하려고 할 때 장면을 변경할 수 없기 때문에 코드가 옳다고 확신합니다. 내가 어디서 잘못한거야?
public class SchermataGiocoController {
private Parent Menu, Avvio;
private TranslateTransition tt;
private Cannone cannone; //cannone = cannon
private Aereo aereo; //aereo = plane
private Proiettile proiettile; //proiettile = bullet
private RotateTransition rt;
@FXML
private Button down;
@FXML
private Circle circle;
@FXML
private Button su;
@FXML
private Button exit;
@FXML
private ImageView cannone_im;
@FXML
private AnchorPane SchermataGioco;
@FXML
private ImageView aereo_im;
@FXML
private Button menu;
@FXML
private Button home;
@FXML
void initialize() {
assert exit != null : "fx:id=\"exit\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert cannone_im != null : "fx:id=\"cannone_im\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert su != null : "fx:id=\"su\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert SchermataGioco != null : "fx:id=\"SchermataGioco\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert aereo_im != null : "fx:id=\"aereo_im\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert menu != null : "fx:id=\"menu\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert down != null : "fx:id=\"down\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
assert home != null : "fx:id=\"home\" was not injected: check your FXML file 'SchermataGioco.fxml'.";
cannone = new Cannone(141, 104, 14, 362);
proiettile = new Proiettile(16, 16, 14, 362);
TranslateTransition();
}
@FXML
public void vaiMenu() {
menu.setOnAction((ActionEvent event) -> {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Game.class.getResource("/game/view/Menu.fxml"));
Menu = (Parent) loader.load();
menu.getScene().getWindow().hide();
} catch (IOException ioe) {
ioe.getMessage();
}
Stage stage = new Stage();
stage.setScene(new Scene(Menu));
stage.show();
});
}
작업 코드의 모양을 보여줄 수 있습니까? 람다는 전혀 변화를주지 않아야합니다. – zapl
여기서 실제로 달성하려는 내용에 대해 자세히 설명해 주시겠습니까? 나는 당신의 문제가 람다 표현과 전혀 관련이 있다고 생각하지 않는다. 오히려 청취자가하는 일에 대한 오해이다. – 1279343
람다 함수를 사용하여 장면을 변경하고 싶습니다. 게시물의 다른 부분을 추가하여 편집했습니다. "메뉴"는 그것을 클릭하는 버튼입니다. 다른 화면으로 이동하는 장면을 변경해야합니다. –