【发布时间】:2016-10-14 23:30:55
【问题描述】:
又是我!我有一门大炮,现在我正在尝试用键盘的箭头移动它。我不明白为什么代码不起作用?我哪里错了? 谢谢!
public class SchermataGiocoController {
private Parent Menu, Avvio;
private TranslateTransition tt;
private Cannone cannone;
private Aereo aereo;
private Proiettile proiettile;
private RotateTransition rt;
@FXML
private Circle circle;
@FXML
private Button exit;
@FXML
private ImageView cannone_im;
@FXML
private ImageView carro;
@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 carro != null : "fx:id=\"carro\" 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 up != null : "fx:id=\"up\" 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'.";
//creazione di un oggetto Cannone
cannone = new Cannone(129, 96, 0, 340); //Cannone = cannone
//creazione di un oggetto Proiettile
proiettile = new Proiettile(16, 16, 0, 340); //proiettile = bullet
//inizializzazione dei vari metodi
TranslateTransition();
moveUp();
moveDown();
goHome();
}
//Method to change scene and back to home
public void goHome() {
home.setOnAction((ActionEvent event) -> {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Game.class.getResource("/game/view/Avvio.fxml"));
Avvio = (Parent) loader.load();
home.getScene().getWindow().hide();
} catch (IOException ioe) {
ioe.getMessage();
}
Stage stage = new Stage();
stage.setScene(new Scene(Avvio));
stage.show();
});
}
@FXML
public void moveUp() {
cannone_im.getScene().setOnKeyPressed((KeyEvent ke) -> {
if (ke.getCode().equals(KeyCode.RIGHT)) {
rt = new RotateTransition(Duration.millis(100), cannone_im);
if (cannone_im.getRotate() > -70) {
rt.setAxis(Z_AXIS);
rt.setByAngle(cannone_im.getRotate());
rt.setToAngle(cannone_im.getRotate() - 5);
} else {
rt.setToAngle(-70);
}
}
rt.play();
});
}
错误是 root 不能为空。谢谢!
【问题讨论】: