JavaFX Viewport verschieben

balkongenie

Mitglied
Hallo,

ich möchte eine Anwendung erstellen, die vom Aufbau her so ist:
  • ein großes Hintergrundbild (wie ein Kreuz, 3 mal 3 Felder)
  • Startbildschirm ist das Feld in der Mitte
  • Beim Klick verschiebt sich der Blick in eins der äußeren Felder, wo sich wiederum Buttons etc befinden.
Die Idee habe ich von hier:
https://blogs.oracle.com/acaicedo/entry/managing_multiple_screens_in_javafx
und dem dazugehörigen Video (ca. ab Minute 24)
leider fehlt mir bei JavaFX noch die nötige Kenntnis, welchen Aufbau ich für diese spezielle Anwendung benötige. Welche Komponente wird eigentlich verschoben? Welche Hierarchie benötige ich hier?
Ich experimentiere nun schon eine Weile damit rum, allerdings schaffe ich nicht den Punkt mit der Animation. Das Hintergrundbild habe ich per CSS eingebunden. Schwierigkeit ergibt sich wie gesagt "einfach" beim Verschieben der Ansicht...

Vielen Dank schon einmal für eure Bemühungen!
Stefan
 
Auch nach einem teilweise Anschauen des Videos ist mir der Begriff "Screens" noch nicht ganz klar.
Ich vermute, dass du mit dem ViewPort herumspielen möchtest. Ich habe selbst zwar schon einiges mit Animationen gemacht, aber noch nicht den Teil.
Ich lese aber sehr oft, das wohl "clipping" häufig die Antwort auf viele solcher Fragen sein soll.
https://dlemmermann.wordpress.com/2015/02/18/javafx-tip-18-path-clipping/
http://saidandem.blogspot.ch/2012/01/sliding-in-javafx-its-all-about.html

Da es ein Beispiel von Oracle zu sein scheint: Sollte es nicht irgendwo den Code dazu geben?

Ich habe da mal etwas gesucht: "Managing Multiple Screens in JavaFX code"
https://blogs.oracle.com/acaicedo/entry/managing_multiple_screens_in_javafx1

Schau mal, was du davon gebrauchen kannst. Es klingt erst einmal plausibel: Nutze ein StackPane und dann schiebe (translate) die Nodes auf dem Stack hin und her, um den entsprechenden Effekt zu erhalten.

Wie mein Clipping-Beispiel ist der Code schon älter (ich denke Java7-Zeiten), aber ich behaupte mal, das meiste ist immer noch aktuell, nur dass du jetzt ein paar mehr Lambdas oder Methodenreferenzen nutzen kannst. Und ein paar kleine API-Teile können leicht anders sein, oder sich anders verhalten.
 
Hi,
ja der 2. Teil davon bezieht sich auf mein Problem, wie oben schon verlinkt. https://blogs.oracle.com/acaicedo/entry/managing_multiple_screens_in_javafx
Jedoch fehlen mir hier wichtige Schlüsselstellen. Zudem wird mir der TranslateTransitionBuilder als deprecated angezeigt. Ich glaube auch, dass ich noch nicht die richtige Komponente verschiebe. Wichtig wäre erst einmal grundsätzlich zu klären,
- wie die Hierarchie der GUI sein sollte
- welche Komponente davon verschoben werden muss,
bzw. ob es eine Einstellung "View" gibt, in der die Position und Größe des angezeigten Bildausschnittes eingestellt wird.

Beste Grüße

Ps.: Ist das Verschieben des Views nicht etwas, was auch in der Spiele-Programmierung gerne verwendet wird? Das Problem sollte doch schon irgendwo frameworkartig gelöst sein...
 
Die Builder wurden beim Move von JavaFX 2 (in Java 7) zu JavaFX 8 (in Java 8) deprecated. Ich habe den Grund mal gelesen, aber vergessen. Hat zu dem Zeitpunkt Sinn ergeben.
Ohne den Code (und nein, ich baue mir das Beispiel jetzt nicht nach), wird es schwer aus dem Stehgreif etwas sinnvolles beizutragen.

IMHO: Die meisten Game-Engines verwenden eher Canvas als gestapelte Layouts, werden dir also wahrscheinlich nur bedingt weiterhelfen.

Wie gesagt: Zeige mal etwas Code (einfaches FXML mit dem Controller dazu) und dann schauen wir mal, ob wir da etwas draus machen können.
 

Zurück
Oben