Předmět Autor Datum
Urcite to pujde naprogramovat. Jen necekej, ze to bude v API... https://docs.oracle.com/javafx/2/an…
MaSo 28.02.2018 20:20
MaSo
Trochu jsem se v tom vrtal a máš pravdu, transformace by bylo možné dosáhnout pomocí paralélně běžíc…
MichalDM 08.03.2018 14:04
MichalDM
Tak jsem to upravil, výsledná kód vypadá takhle: int i; Timeline timer = new Timeline(new KeyFrame… poslední
MichalDM 14.03.2018 19:03
MichalDM

Trochu jsem se v tom vrtal a máš pravdu, transformace by bylo možné dosáhnout pomocí paralélně běžících animací na překrývající objekty, ale kód by sis samozřejmě musel napsat sám.

I když, v mám případě spíš objekt potřebuji "vyrolovat" a "srolovat" tu část, co tam chybí.

Našel jsem na internetu kód, který funguje a změnil jsem ho, aby fungoval pro můj Polygon


        import java.util.Timer;
        import java.util.TimerTask;

        Timer animTimer = new Timer();
        animTimer.scheduleAtFixedRate(new TimerTask() {
            int i = počáteční místo bodu;

            @Override
            public void run() {
                if (i < koncové místo bodu) {
                   polygon.getPoints().set(y hodnota dolního levého bodu, (double) i);
                   polygon.getPoints().set(y hodnota dolního pravého bodu, (double) i);
                } else {
                    this.cancel();
                }
                i++;
            }

        }, 0, 25);

Funguje dobře, ale chtěl bych se zeptat na dvě věci.

1. Jak to změním, abych mohl použít knihovny z javafx? (javafx.animation.Timeline žádnou metodu scheduleAtFixedRate nemá)
2. Kód je sice jednoduchý, přesto bych se chtěl zeptat, jestli neexistuje nějaké optimálnější algoritmus.

Děkuji

Tak jsem to upravil, výsledná kód vypadá takhle:


int i;
Timeline timer = new Timeline(new KeyFrame(Duration.millis(50), (event) -> {
    i = polygon.getPoints().get(y hodnota dolního levého bodu) + 1; // v případě srolování jedničku odečíst.
    polygon.getPoints().set(y hodnota dolního levého bodu, i);
    polygon.getPoints().set(y hodnota dolního pravého bodu, i);
}));
timer.setCycleCount(požadované číslo); // Při každém cyklu se objekt vyroluje/sroluje o 1 pixel
timer.play();

Zpět do poradny Odpovědět na původní otázku Nahoru