現在、Textadventureに取り組んでおり、コンソールからScenebuilderを使ってJavaFXに移動することに決めました。私は、出力にはTextView、入力にはTextFieldを使用しています。 これは私のコードがどのように見えるかです:TextFieldの入力待ちメソッドを効率的に実装するには? (JavaFX)
public class Story implements Initializable {
public Button startButton;
public TextArea textArea;
public TextField textField;
public EventHandler mainplot;
//On startButton pressed
public void startGame() {
setEventFilters();
begin();
}
public void begin() {
print("Welcome to the Adventure."); //print is a method for appending String to textArea
print("You wake up in your room.");
print("Fresh air blows through your window.");
print("You get up. What do you want to do?");
print("1. Drink from the magical can.");
print("2. Go outside.");
textField.addEventFilter(ActionEvent.ACTION, mainplot);
}
public void magicalCan() {
...
}
public void goOutside() {
...
}
public void setEventFilters() {
//mainplotFilter
mainplot = new EventHandler<ActionEvent>() {
public void handle(ActionEvent e){
if(textField.getText().equals("1")) {
textField.removeEventFilter(ActionEvent.ACTION, mainplot);
magicalCan();
}
if(textField.getText().equals("2")) {
textField.removeEventFilter(ActionEvent.ACTION, mainplot);
goOutside();
}
}
};
}
コードは同じスキームで継続 - 意思決定とストーリーのためのより多くの方法のためのより多くのEventfilters。今let'sは、私はストーリーライン内に複数のEnterキーの入力を追加したいと言う:
public void begin() {
print("Welcome to the Adventure.");
//wait for enter to continue
print("You wake up in your room.");
print("Fresh air blows through your window.");
print("You get up. What do you want to do?");
//wait for enter to continue
print("1. Drink from the magical can.");
print("2. Go outside.");
textField.addEventFilter(ActionEvent.ACTION, mainplot);
}
のEventHandlerまたはすべてのストーリーの方法で使用できるwaitForEnterkey()メソッドを実装するための最も効率的な方法は何ですか?
なぜ20-30イベントハンドラが必要なのですか?ストーリーラインの状態に基づいて意思決定を行うことができるハンドラは、より良いアプローチになります。 – Geoff
これを試す前に簡単な 'JavaFX'チュートリアルを行います。 [ここ](http://tutorials.jenkov.com/javafx/textfield.html)を開始してください。 'Textfield'の仕組みを理解していない。 – Sedrick
私は私の質問を明確にしました。どうぞご覧ください。 – Andrenergy