【发布时间】:2017-11-19 23:07:01
【问题描述】:
基本上,我想做的是类似于使用 JavaFX 的基于文本的 RPG。现在,要显示一些文本,我有这个:
final IntegerProperty i = new SimpleIntegerProperty(0);
Timeline timeline = new Timeline();
KeyFrame keyFrame = new KeyFrame(
Duration.millis(70),
event -> {
if (i.get() > info.getText().length()) {
timeline.stop();
} else {
text.setText(info.getText().substring(0, i.get()));
i.set(i.get() + 1);
}
});
timeline.getKeyFrames().add(keyFrame);
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
timeline.setOnFinished(a -> {
hb_start.getChildren().clear();
hb_start.getChildren().addAll(start_left,start_right);
hb_start.setAlignment(Pos.CENTER);
});
由于动画的长度取决于文本的大小,因此将循环计数设置为无限期。除非我缺少其他方法让动画播放一次然后停止,否则我希望它在您按下回车(或我稍后决定的其他键)时调用timeline.stop(); 但我无法弄清楚如何添加任何类型的侦听器。尝试实现keyListener 似乎附带了各种我不需要的东西,而且它也不适用于TextField,而是想要一个JTextField,这可能很好,除了我不知道如何用 Swing 做任何事情。
目前,文本显示在TextFlow 中,来自Text 的文本。我假设听众会被添加到TextFlow,甚至是场景本身,老实说,我不知道该怎么做。这听起来很简单,但我似乎无法弄清楚。
【问题讨论】:
标签: javafx listener keylistener