Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[JavaFX] - animacja - setDuration() działa tylko dla milisekund.

#1
[JavaFX] - animacja - setDuration() działa tylko dla milisekund.
Cześć!

Uczę się JavyFX z nowego JDK 1.8, postanowiłem się pobawić animacją i napisałem taki kod:
Kod:
package animationdemo01;

import javafx.animation.PathTransition;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

/**
*
* @author Michał
*/
public class AnimationDemo01 extends Application {
   
   @Override
   public void start(Stage primaryStage) {
       Pane root = new Pane();
       Rectangle rect = new Rectangle(0, 0, 25, 50);
       rect.setFill(Color.ORANGE);
       
       Circle circle = new Circle(125, 100, 50);
       circle.setFill(Color.WHITE);
       circle.setStroke(Color.BLACK);
       
       root.getChildren().add(rect);
       root.getChildren().add(circle);
       
       PathTransition pt = new PathTransition();
       pt.setDuration(Duration.millis(5000));
       pt.setCycleCount(Timeline.INDEFINITE);
       pt.setPath(circle);
       pt.setNode(rect);
       pt.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
       pt.setAutoReverse(true);
       pt.play();
       
       circle.setOnMousePressed(e -> { pt.pause(); });
       circle.setOnMouseReleased(e-> { pt.play(); });
       
       Scene scene = new Scene(root, 300, 250);
       primaryStage.setTitle("Muahahaha animacja!");
       primaryStage.setScene(scene);
       primaryStage.show();
   }

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

Problem mam z linijką pt.setDuration(Duration.millis(5000)); - chcialbym, żeby animacja działała na stałe czyli było tam Duration.INDEFINITE kod jednak nie działa i animacja stoi w miejscu, to samo dzieje się kiedy ustawię czas animacji na sekundy czy godziny. Jedyna wartość jaką program akceptuje by rozpocząć animację to milisekundy. Co robię nie tak?
Każdy dzień bez forum to dzień stracony.
 System operacyjny: windows_eight Przeglądarka: chrome
#2
RE: [JavaFX] - animacja - setDuration() działa tylko dla milisekund.
Sprawdziłem u siebie i mi ten program działa (również dla innych niż milisekundy). Zastanawiam się jednak, jaki efekt chcesz osiągnąć. Jaki ustawiasz czas? Jak chcesz obserwować ruch, skoro ustawiasz skończoną drogę w nieskończonym czasie? Czy przypadkiem uzyskana prędkość nie będzie wynosić 0, co oznacza, że ruchu nie zobaczysz?
 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: [JavaFX] - animacja - setDuration() działa tylko dla milisekund.
Wiesz, nie chodzi mi o nieskończony czas. Bardziej chodzi mi o to że dowolna wartość (nawet 5s) nie wywołuje ruchu. Jeżeli wartość podam w ms wszystko działa. To jest problemem bo chciałbym podać ruch np. w sekundach czy minutach a nie mogę.
Każdy dzień bez forum to dzień stracony.
 System operacyjny: windows_eight Przeglądarka: chrome
#4
RE: [JavaFX] - animacja - setDuration() działa tylko dla milisekund.
Sprawdzałem u siebie w wersji Javy 1.8.0 build 25, w wersji 64 bitowej na Win 7 x64. Działają wszystkie ustawienia. Może to Windows 8 coś psuje?
 System operacyjny: windows_seven Przeglądarka: firefox
#5
RE: [JavaFX] - animacja - setDuration() działa tylko dla milisekund.
Nie wiem, spróbuję napisać program od nowa i zobaczę. Jak mówię - kod podany przeze mnie działa idealnie ale kiedy zamienię milisekundy na sekundy i te samą wartość - nic się nie dzieje. Nie żebym zamierzał korzystać z animacji ale fajnie je poznać.
Każdy dzień bez forum to dzień stracony.
 System operacyjny: windows_eight Przeglądarka: chrome
#6
RE: [JavaFX] - animacja - setDuration() działa tylko dla milisekund.
Sprawdziłem jeszcze pod Linuksem i również działa poprawnie. Naprawdę nie wiem, co to może być. Stawiam na Windowsa 8/10...
 System operacyjny: linux_fedora Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([JavaFX] - animacja - setDuration() działa tylko dla milisekund.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Gra platformowa 2D ( widok z boku ), tylko dla treningu aht 5 11472 25.05.2016, 07:56
Ostatni post: aht
  Dlaczego animacja wykonuje się skokowo, a nie płynnie klatka po klatce. Dreamer1x6xX 10 18542 06.06.2015, 03:07
Ostatni post: Dreamer1x6xX
  JAVAFX Quiz problem braders2 1 8712 19.04.2015, 02:02
Ostatni post: braders2

Skocz do: