Kotlin 动态更新FX中的多段线点
这个问题有点简单化了,但我自己无法解决。。。我尝试使用JavaFX时间线来更新多段线点。到目前为止,我得到的信息如下:Kotlin 动态更新FX中的多段线点,kotlin,javafx,tornadofx,Kotlin,Javafx,Tornadofx,这个问题有点简单化了,但我自己无法解决。。。我尝试使用JavaFX时间线来更新多段线点。到目前为止,我得到的信息如下: class MainView : View("Hello TornadoFX") { var myLine: Polyline by singleAssign() val myTimeline = timeline { cycleCount = INDEFINITE } override val root =
class MainView : View("Hello TornadoFX") {
var myLine: Polyline by singleAssign()
val myTimeline = timeline {
cycleCount = INDEFINITE
}
override val root = hbox {
myLine = polyline(0.0, 0.0, 100.0, 100.0)
myTimeline.apply {
keyFrames += KeyFrame((1/10.0).seconds, {
myLine.points.forEachIndexed { i, d ->
myLine.points[i] = d + 1
}
println(myLine.points)
})
play()
}
}
}
尽管点列表会更新值,如打印时所示,但更改不会反映在ui中
非常感谢你的帮助 我之前没有使用过TornadFX,所以我尝试使用普通的JavaFX。点更新时,UI似乎正在更新。问题可能与您使用TornadoFX的实现有关 请检查下面的工作示例
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Polyline;
import javafx.stage.Stage;
import javafx.util.Duration;
public class PolyLinePointsUpdateDemo extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Pane root = new Pane();
Scene scene = new Scene(root, 600,600);
primaryStage.setScene(scene);
primaryStage.setTitle("PolyLine Points Update");
primaryStage.show();
Polyline line = new Polyline(0.0, 0.0, 100.0, 100.0);
root.getChildren().add(line);
Timeline timeline = new Timeline();
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(250), e->{
for (int i = 0; i < line.getPoints().size(); i++) {
double d = line.getPoints().get(i);
line.getPoints().set(i, d+1);
}
System.out.println(line.getPoints());
}));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
}
public static void main(String... a){
Application.launch(a);
}
}
导入javafx.animation.animation;
导入javafx.animation.KeyFrame;
导入javafx.animation.Timeline;
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.layout.Pane;
导入javafx.scene.shape.Polyline;
导入javafx.stage.stage;
导入javafx.util.Duration;
公共类PolyLinePointsUpdateDemo扩展了应用程序{
@凌驾
public void start(Stage primaryStage)引发异常{
窗格根=新窗格();
场景=新场景(根,600600);
初级阶段。场景(场景);
setTitle(“多段线点更新”);
primaryStage.show();
多段线=新的多段线(0.0,0.0,100.0,100.0);
root.getChildren().add(行);
时间线=新时间线();
timeline.getKeyFrames().add(新的关键帧)(持续时间.millis(250),e->{
对于(int i=0;i
发现问题仅仅是使用hbox作为父布局,而不是使用窗格,该窗格使用绝对坐标处理孩子的定位。已经解决了,谢谢您的时间