Я пытаюсь вращать цилиндр вокруг выбранной оси, которая задается пользователем с помощью ползунков, но я не могу заставить слушателей анимации и ползунков взаимодействовать.
Я пытался использовать слушатели на ползунках, а также обычный .getValue (), но в моей текущей установке ни один из них не работает.
Делать это без ползунков, то есть работать с фиксированными значениями, казалось, работает очень хорошо.
i.valueProperty().addListener //example of my slider listener (there are four: x, y, z and speed of rotation)
(
new ChangeListener<Number>()
{
public void changed(ObservableValue <? extends Number >
observable, Number oldValue, Number newValue)
{
x = (double) newValue;
}
});
final Timeline rotationAnimation = new Timeline();
rotationAnimation.setCycleCount(Animation.INDEFINITE);
KeyValue keyValue = new KeyValue(rotate.angleProperty(),360);
Duration duration = Duration.seconds(speed);
EventHandler<ActionEvent> onFinished = new EventHandler<ActionEvent>()
{
public void handle(ActionEvent t)
{
x = (double) i.getValue();
y = (double) j.getValue();
z = (double) k.getValue();
speed = (double) 1/v.getValue();
}
};
KeyFrame keyFrame = new KeyFrame(duration, onFinished , keyValue);
rotationAnimation.getKeyFrames().add(keyFrame);
rotationAnimation.play();
I want my cylinder to rotate freely, at this point I just get blank window.