0

Необходимо по таймеру увеличивать и уменьшать сферу например за 5 секунд увеличить и за 5 секунд уменьшить, этот код работает, ну я не знаю как указать время.

private void prepareAnimation() {
 AnimationTimer timer = new AnimationTimer() {
 double i = 0;
 double step = 2.4;
 int s = 0;
 @Override
 public void handle(long now) {
 i += step;
 s++;
 sphere.translateZProperty().set(i);
 if (s == 1000) {
 step *= -1;
 s = 0;
 }
 }
 };
 timer.start();
}
insolor
51.7k18 золотых знаков61 серебряный знак105 бронзовых знаков
задан 26 нояб. 2019 в 12:29

1 ответ 1

0

Вот вариант с использованием ScaleTransition:

@Override
public void start(Stage stage) {
 Sphere sphere = new Sphere(100.0);
 HBox root = new HBox(sphere);
 Scene scene = new Scene(root);
 stage.setScene(scene);
 stage.setTitle("Scale Transition");
 stage.show();
 // Set up a scale transition for the sphere
 ScaleTransition st = new ScaleTransition(Duration.seconds(5), sphere);
 st.setFromX(1.0);
 st.setToX(0.2);
 st.setFromY(1.0);
 st.setToY(0.2);
 st.setCycleCount(ScaleTransition.INDEFINITE);
 st.setAutoReverse(true);
 st.play();
}

Время задается в конструкторе ScaleTransition.

ответ дан 28 нояб. 2019 в 10:46

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.