Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FMX : Karte umdrehen als Animation (https://www.delphipraxis.net/205422-fmx-karte-umdrehen-als-animation.html)

MyRealName 8. Sep 2020 09:02

FMX : Karte umdrehen als Animation
 
Ich will für meine Frau eine Helfer App programmieren (sie lernt gerade deutsch) und wollte ihr die Sprachkarten programmieren für Ihr Handy (Android). Ich habe schon einiges gemacht als App, aber noch nichts wirklich grafisches, eher so GUI mit den Controls, die es da so gibt.
Die Karte (im einfachsten Fall) kann ein 2-seitiges Panel sein, welches sich dann um seine Achse umdreht. Auf der einen Seite steht das deutsche Wort, auf der anderen das spanische.

Gibt es da die mögliochkeit, das mit Animationen in FMX zu machen ? Oder muss ich dazu mir das mit der 3D-Programmierung ansehen ?

Danke schonmal :)

Rollo62 8. Sep 2020 09:09

AW: FMX : Karte umdrehen als Animation
 
Also ist die Karte selbst ein Panel ?
Ich würde da eher ein Rectangle für nehmen, Panels wie unter VCL nutze ich gar nicht mehr, TLayout und TRectangle sind der Ersatz für mich dafür.

Egal, alle Controls haben ein .RotationAngle Property, mit dem man die Elemente rotieren kann.

Das könnte man reltiv simpel animieren, mit TFloatAnimation.

Hilft Dir das weiter ?

MyRealName 8. Sep 2020 09:17

AW: FMX : Karte umdrehen als Animation
 
Genau sowas suchte ich :) Danke

Edit: Doch nicht. Das dreht sich da aber nur im 2D, wenn ich RotationAngle und RotationCenter ändere. Was ich halt versuchen will, ist dass es sich vertikal von links nach rechts dreht und dann die Rückseite sichtbar ist.

Rollo62 8. Sep 2020 09:55

AW: FMX : Karte umdrehen als Animation
 
Zitat:

Zitat von MyRealName (Beitrag 1473214)
Genau sowas suchte ich :) Danke

Edit: Doch nicht. Das dreht sich da aber nur im 2D, wenn ich RotationAngle und RotationCenter ändere. Was ich halt versuchen will, ist dass es sich vertikal von links nach rechts dreht und dann die Rückseite sichtbar ist.

Also ein PageFlip.
Das wäre sicher mit FMX 3D, statt FMX HD möglich.
Das ist dann aber eine Textur auf einem 3D Objekt, und wird entsprechend komplexer.

Es gibt da aber Einiges
https://stackoverflow.com/questions/...emonkey-mobile

https://edn.embarcadero.com/article/41874

https://zarko-gajic.iz.hr/memory-3d-...e-delphi-game/

auch einen GameEngine für Card-Games, finde ich gerade nicht.

MyRealName 8. Sep 2020 10:33

AW: FMX : Karte umdrehen als Animation
 
Ich habe es gerade mit einem Viewport und einem TCube probiert, kann man halt die Tiefe auf 0,1 stellen, dann ist das wie eine Karte. Heut abend schau ich mal, wie ich das über eine Animation drehen kann und ob man das dynamisch ein- und ausblenden kann (den Viewport), so dass das eigentlich eine 2D-Anwendung ist aber das mit den Karten so gelöst wird :)

Danke erstmal.

ZYLAGON 8. Sep 2020 19:30

AW: FMX : Karte umdrehen als Animation
 
Wenn es 3D sein soll, könntest Du in Deinem Beispiel mit dem Viewport den Cube in einen TDummy stecken, die x-Position des Cubes innerhalb des Dummys verschieben und eine FloatAnimation dem Dummy zuordnen.
Wird dann der Dummy um die Y-Achse rotiert, verhält sich der Cube wie eine Seite, die von einer Seite zur anderen wandert.

VG ZYL

MyRealName 9. Sep 2020 08:12

AW: FMX : Karte umdrehen als Animation
 
würde es die Drehung des Cubes nicht auch tun ? Warum der Dummy ? (Sorry, wenn es eine dumme Frage ist, aber ich habe noch nicht mit FMX 3D Sachen gearbeitet, nur normal OpenGL und das ist auch schon etwas her :P)

ZYLAGON 9. Sep 2020 17:37

AW: FMX : Karte umdrehen als Animation
 
Eigentlich sollte es genügen, den Cube zu drehen.
Aber da ich das mit dem RotationCenter nicht hinbekomme, behelfe ich mir mit einem unsichtbaren TDummy-Container.
Da ich den Cube in dem Dummy verschiebe, rotiert der Cube nicht um seinen Mittelpunkt sondern um den Mittelpunkt des Dummys.
Habe gestern mal getestet mit einer FloatAnimation von 0 bis 180° und das sah schon recht gut aus.

VG ZYL

MyRealName 25. Sep 2020 07:56

AW: FMX : Karte umdrehen als Animation
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also, ich habe jetzt einen komischen Effekt..
In Win32 FMX sieht alles Ok aus (konnte das animierte Gif nicht anhängen musste es als Link einfügen

Aber in Android bewegt sich nicht nur garnichts, sondern es wird beim reinkommen schon nur die Rückseite angezeigt, die card flip wird aber nicht aufgerufen.
Ich habe die Form mal angehängt (ohne Projekt wegen Android einstellungen etc.), die kann man ja einfach in ein leeres Projekt nehmen.

Sollte es unter Android nicht genauso gehen ?

Edit: Ausserdem... ich habe ja in dem Image1 zwei Bitmaps drin. Wie kann ich definieren, welches angezeigt wird ? Ohne eines zu zerstören. Weise ich IMage1.Bitmap eins zu aus der MultResBitmap liste, dann wird das erste überschrieben

Rollo62 25. Sep 2020 16:01

AW: FMX : Karte umdrehen als Animation
 
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich sollte es gleich sein, das stimmt.
Aber oft verhält es sich dann doch Anders als gedacht.

Ich habe mal ein bischen damit rumgespielt, und dein Projekt leider etwas verunstaltet.
So geht es aber bei mir.
  1. Du hattest TImage als Container für die Bilder und als Anzeige benutzt.
    Ich habe jetzt das TImage nur als Container für die Bilder benutzt.
  2. Das ViewPort3D war on-the-fly erzeugt, ich habe hier das einmalig auf die Form gelegt und benutzt
  3. Die Objekte für das ViewPort3D erzeuge ich jetzt auch nur einmalig
  4. Nach dem Flip hattest Du das TImage überschrieben, was natürlich etwas überschrieben hat.
    (Deshalb TImage jetzt nur als Container, und ViewPort nur als Anzeige)
  5. Natürlich sollte man das on-the-fly machen können, aber ich habe ja nach der Ursache gesucht, und deshalb umgebaut.
  6. Das Rectangle im Vieport3D war nicht zentriert, wurde deshalb womöglich nicht angezeigt.
    Habe Folgendes eingebaut:
    R.Position.X := VP.Width / 2; //ADD:
    R.Position.Y := VP.Height / 2; //ADD:
  7. Ursächlich für die fehlende Animation war wohl das R.AnimateFloatWait(, die habe ich durch R.AnimateFloat( ersetzt.
    In FMX sollte möglichst Alles nebenläufig sein, deshalb hat das nicht funktioniert.
  8. Die Elemente habe ich mit Align und TLayout reingesetzt, damit immer der optimale Screenbereich angezeigt wird.
    Bei Position mit X/Y kann es durch Scaling und andere Effekte in die Hose gehen, ich nutze immer nur Align.Client, Top, Bottom, etc.
  9. Ich habe dir noch den Flip vor und zurück reingebaut, zum Test.

Sonst habe ich nicht weiter reingeschaut, ich denke das sollte man vielleicht noch etwas umbauen, um es wieder on-the-fly zu bekommen.
Habe aber ekeine Zeit mehr dafür.

(*) Änderungen mit //OFF: oder //ADD: markiert (ich hoffe Alle)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz