Какой аспект анимации JavaFX отсутствует в этом? - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь заставить эту простую анимацию воспроизводиться на фоне изображения, но не могу запустить ее.Я попытался добавить в кнопку, а также использовать playFromStart () вместо play ().Я также попытался добавить в путь заданную ориентацию, я не думал, что это что-то сделает, потому что я просто перемещаю круг, и это не помогло.Я также попытался поиграть со временем и количеством повторений анимации на тот случай, если бы все происходило очень быстро или медленно, и я просто пропустил это.Я чувствую, что, возможно, я упускаю что-то действительно простое, но из всего, что я посмотрел, все, что есть в примерах, у меня тоже есть.

Фоновое изображение также исчезло, когда я добавил кнопкудля этого я пытался продвинуть его и другие вещи, но я чувствую, что это также простая проблема, которую мой мозг только что застеклил.

package javafxapplication10;
import javafx.animation.PathTransition;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.*;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.*;
import javafx.stage.Stage;
import javafx.util.Duration;


public class JavaFXApplication10 extends Application {

    @Override
    public void start(Stage stage) {


            stage.setScene(scene);
            stage.setResizable(false);
            stage.sizeToScene();
            ImagePattern pattern = new ImagePattern(image);
            scene.setFill(pattern);        

            stage.setScene(scene);
            stage.show();

            Circle cir = new Circle (19);            
            cir.setLayoutX(170);
            cir.setLayoutY(100);
            cir.setFill(Color.KHAKI);
            pane.getChildren().add(cir);

            Path path1 = new Path();


            path1.getElements().add(new MoveTo(170,650));
            path1.getElements().add(new MoveTo(1335,650));
            path1.getElements().add(new MoveTo(1335,100));
            PathTransition pl = new PathTransition();
            pl.setDuration(Duration.seconds(8));
            pl.setPath(path1);
            pl.setNode(cir);
            pl.setCycleCount(1);
            //pl.setOrientation(OrientationType.ORTHOGONAL_TO_TANGENT);
            pl.setAutoReverse(false);
            //pl.play();

             Button begin = new Button("Begin");
            begin.setLayoutX(780);
            begin.setLayoutY(105);
            begin.setOnAction(new EventHandler<ActionEvent> () {
            @Override
            public void handle(ActionEvent press) {
                pl.play();

            }
            }); 
            pane.getChildren().add(begin);


    }

    Image image = new Image("file:Figure one.png");

    Pane pane = new Pane();
    Scene scene = new Scene (pane,1474,707);

    public static void main(String[] args) {
        launch(args);
    }

}

1 Ответ

0 голосов
/ 28 октября 2018

PathTransition только перемещает узел вдоль пути, который фактически будет нарисован.MoveTo элементы ничего не рисуют, а просто устанавливают текущую позицию.Вам нужно использовать LineTo (и / или ClosePath), чтобы нарисовать что-то в Path.Кроме того, PathTransition устанавливает параметры перевода, а не свойства макета, т. Е. Конечное положение круга определяется путем добавления координат компоновки к coodrinates, предоставленным Path.Поэтому вам следует либо расположить Circle, используя свойства перевода, либо начать путь с (0, 0):

Path path1 = new Path(
        new MoveTo(0, 0),
        new LineTo(0, 550),
        new LineTo(1165, 550),
        new LineTo(1165, 0),
        new ClosePath()
);
// path1.getElements().add(new MoveTo(170,650));
// path1.getElements().add(new MoveTo(1335,650));
// path1.getElements().add(new MoveTo(1335,100));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...