Anzeige-Fenster und -Elemente können über einen sehr flexiblen Mechanismus animiert werden. Diese Animation kann nicht nur Position und Größe betreffen, sondern auch andere Eigenschaften, etwa Transparenz oder Farben.
Es können auch unterschiedliche Auslöser oder Abbruchbedingungen für die Animationen definiert werden, ebenso wie danach auszuführende Animationen oder Wiederholungsarten.
Es werden hierzu über Animations-Platzhalter Animationen vordefiniert und nur deren IDs in die Animation-Eigenschaft eines Elements oder Fensters eingesetzt. Auf diese Weise können beliebige Standard-Animationen für die Anwendung vordefiniert werden, die dann alle gleich sind und leicht global angepasst werden können.
Als Beispiel kann die Animation mit der ID Anim1 mit einem Mehrfach-Setze-Befehl definiert werden:
Setze , MultiSet 'cX.Animation(Anim1):¶.FensterID=F1.B1¶.Eigenschaft=1¶.Endwert$=[cX...'
Insgesamt werden hier Eigenschaften des Platzhalters cX.Animation(Anim1).X gesetzt, was über den Mehrfach-Setze-Befehl sehr einfach ist:
cX.Animation(Anim1):
.FensterID=F1.B1
.Eigenschaft=1
.Endwert$=[cX.Animation().Startwert]+50
.Modus=2
.Auslösung=2
.StartStop=1
Diese Animation variiert die X-Eigenschaft (Eigenschaft=1) des Elements B1 in Fenster F1 vom aktuellen Wert bis zu 50mm (bei Skripteinstellung Millimeter) nach rechts und wieder zurück (Modus=2), automatisch (StartStop=1) dann, wenn es berührt wird (Auslösung=2).
Folgende Eigenschaften von cX.Animation() stehen hierbei zur Verfügung:
.Abschlussereignis | Hier kann ein Markenname angegeben werden, welcher am Ende der Animation (bei .Modus 1 oder 3) aufgerufen werden soll. Optional kann dabei ein Parameter mit angegeben werden, um zusätzliche Informationen an die Bearbeitungsfunktion zu übergeben. Wird also z.B. Abschluss(Test) angegeben und die Marke lautet ::Abschluss(Name), wird diese aufgerufen, wobei dann "Test" in der Variablen [Name] steht (siehe Funktionen). Wird als Ereignismarke dagegen nur Abschluss angegeben, wird ebenfalls die Marke ::Abschluss(Name) aufgerufen, wobei [Name] dann leer ist. |
.AktuellerWert | Zugriff auf den aktuellen Eigenschaftswert; optional kann per Index die Zieleigenschaft angegeben werden |
.Anzahl | Liefert die Anzahl der definierten Animationen |
.Auslösung | Bestimmt die Auslösung der Animation: 0=Manuell (bei .StartStop=1), 1=Anklicken, 2=Mausberührung, 3=Verlassen mit der Maus, 4=Fokuserhalt, 5=Fokusverlust |
.BeendetID | Liefert die ID der zuletzt abgeschlossenen Animation (nützlich im Abschlussereignis) |
.Dauer | Dauer der Animation (Standard=500ms) |
.Eigenschaft | Zu animierende Eigenschaft: 1=X, 2=Y, 3=Breite, 4=Höhe, 5=Hintergrundfarbe, 6=Transparenz (nur Fenster), 7=Zuweisung ausführen (siehe .Zuweisung), 8=Drehwinkel (Zeichenflächen) Typ 7 ermöglicht das Setzen weiterer Eigenschaften, wobei hier noch .Zuweisung angegeben werden muss. |
.Endwert | Endwert für die Eigenschaft (bei Formeln .Endwert$ verwenden!). Optional kann per Index die Zieleigenschaft angegeben werden. Wird der Endwert nicht angegeben, wird der aktuelle Wert der Eigenschaft verwendet. Beim Lesen wird der gesetzte oder ermittelte numerische Wert geliefert. Um den Endwert relativ zum Startwert anzugeben, kann dieser mit "cX.Animation.Endwert(n)$=[cX.Animation().AktuellerWert(n)]" mit n=Eigenschaftsindex verrechnet werden. |
.FensterID | ID des zu animierenden Fensters bzw. Elements |
.ID | ID der aktuellen Animation |
.Intervall | Schrittintervall in Millisekunden (Standard=20ms, Minimum=10ms) |
.Kollisionsereignis | Hier kann ein Markenname angegeben werden, welcher bei Kollisionen mit anderen Elementen aufgerufen werden soll. Das Ereignis wird nicht erneut für die selbe Kollision ausgelöst, wenn diese Kollision andauert. Optional kann dabei ein Parameter mit angegeben werden, um zusätzliche Informationen an die Bearbeitungsfunktion zu übergeben. Wird also z.B. Kollision(Test) angegeben und die Marke lautet ::Kollision(Name), wird diese aufgerufen, wobei dann "Test" in der Variablen [Name] steht (siehe Funktionen). Wird als Ereignismarke dagegen nur Kollision angegeben, wird ebenfalls die Marke ::Kollision(Name) aufgerufen, wobei [Name] dann leer ist. Hinweis: Bei sehr schnell bewegten Elementen kann ggf. ein kleines anderes Element übersprungen und nicht als Kollision gemeldet werden. |
.KollisionsIDs | Hier stehen bei Kollisionen (also im Kollisionsereignis abzurufen) die IDs der berührten anderen Elemente als Liste. |
.Läuft | Liefert 1, wenn die Animation gerade läuft |
.Modus | Bestimmt die Animationsart: 0=einmal (Vorgabe - Starten per StartStop=1), 1=ständig wiederholt, 2=hin und zurück, 3=wiederholt hin und zurück, 4=wechseln zwischen Start- und Zielwert |
.NächsteAnimation | Hier kann die ID einer anderen Animation angegeben werden, welche im Anschluss an diese (bei .Modus 1 oder 3) ausgeführt werden soll |
.Prozent | aktueller Prozentsatz der Animation |
.StartStop | Animation sofort (2) bzw. je nach Trigger starten (1), beenden (0), pausieren (-1), weiterlaufen lassen (-2), abschließen (-3) oder Reset (-4) |
.Startwert | Startwert für die Eigenschaft (bei Formeln .Startwert$ verwenden). Optional kann per Index die Zieleigenschaft (s.o.) angegeben werden, z.B. .Startwert(1)=1 für X-Position. Wird der Startwert nicht angegeben, wird der aktuelle Wert der Eigenschaft verwendet. Beim Lesen wird der gesetzte oder ermittelte numerische Wert geliefert. |
.TriggerAnimation | ID der Animation, bei deren Auslösung auch diese Animation starten soll, wenn sie nicht bereits läuft |
.Vorlage | Setzen auf ID einer vorhandenen Animation kopiert diese als Vorlage |
.Wiederholungen | Bei den Modi 1 und 3 max. durchzuführende Wiederholungen (0=unbegrenzt) |
.Zurücksetzung | Bestimmt das Ereignis zum Stoppen/Zurücksetzen der Animation: 1=Anklicken, 2=Mausberührung, 3=Verlassen mit der Maus, 4=Fokuserhalt, 5=Fokusverlust |
.Zuweisung | Hier kann bei Eigenschaft=7 (s.o.) eine beliebige Zuweisung mit Verrechnung von .Prozent oder .AktuellerWert .stehen, etwa Anzeige.Element(ID).X = [cX.Animation(ID).Prozent] |
.Zyklusereignis | Hier kann ein Markenname angegeben werden, welcher am Ende eines Durchlaufs bei zyklischen Animationstypen aufgerufen werden soll. Optional kann dabei ein Parameter mit angegeben werden, um zusätzliche Informationen an die Bearbeitungsfunktion zu übergeben. Wird also z.B. Zyklus(Test) angegeben und die Marke lautet ::Zyklus(Name), wird diese aufgerufen, wobei dann "Test" in der Variablen [Name] steht (siehe Funktionen). Wird als Ereignismarke dagegen nur Zyklus angegeben, wird ebenfalls die Marke ::Zyklus(Name) aufgerufen, wobei [Name] dann leer ist. |
Während der Animation von Anzeige-Elementen werden (falls in .Kollisionsereignis definiert) Kollisionen mit anderen Elementen im entsprechenden Ereignis-Unterprogramm gemeldet. Die IDs der berührten Elemente dann in [cX.Animation.KollisionsIDs]
Nach Abschluss einer Animation wird (falls in .Abschlussereignis definiert) das entsprechende Ereignis-Unterprogramm aufgerufen, wobei [cX.Animation.BeendetID] die ID der zuletzt abgeschlossenen Animation enthält.
In diesen Unterprogrammen kann bei Bedarf über [cX.Animation([cX.Animation.BeendetID]).FensterID] die ID des animierten Elements ermittelt werden.
Schnellanimation per Kurzdefinition
Um ein Element ohne spezielle Definition einer Animation schnell und einfach vorübergehend animieren zu können, kann in der Animation-Eigenschaft des Elements auch eine Kurzdefinition der durchzuführenden Animation angegeben werden. Diese wird dann nur beim ersten Erscheinen des Elements durchgeführt.
Angegeben wird dabei eine Liste der Werte, zwischen denen sich die Animation abspielen bzw. wie lange sie dauern soll. Angegeben werden können dabei:
X1 Startposition horizontal (Standardwert=aktuelle Position)
X2 Endposition horiziontal
Y1 Startposition vertikal (Standardwert=aktuelle Position)
Y2 Endposition vertikal
T Dauer der Bewegung in Sekunden (Standard=500ms)
Die Kurzdefinition X2=40;Y2=50; T=5 etwa lässt das Element von der definierten Startposition aus innerhalb von 5 Sekunden an die Position X=40/Y=50 (Millimeter, wenn nicht anders eingestellt) laufen.
Beispiel Animation **cx5AR+LCAAAAAAABADNWd1u2zYUvh+wdzjV2sLCEEey7HRzowFxnSAZmi5AgqRNkQvapi3OEmmQVJz4efIMu+pdXmyHsizL8X+qrLtJRFo+5+PHw++cQ++ftyUb6D9+/glg/4OIIsI7KhlNx5D+v7gfUN8yA8q1BRf0TvtWk0aCKy2JZoJDX0SDkN5RCQecRcmcuiWSEa4pt2B3peXDaKDv1730xP0h462Q8s5O5g86tMs4o5JyKN0yGlK4nCCAbkjafSo5hJR1EGWLMjiiiB/n7C1d92M5gkBINhJckxCGxnS4dpXnVCd4ELYFp3GoGc74VvtzOVtCCZ/ONZHatetvf7lrvsc/B+/Lh6yHUNsB6Wrfzc/zzpBK/dr/OmPELic2zEc3v9Zy75+KTqz8Sm6mSWIq/YrjRGp7/kdCRIbrlFsNoyHhPRU+PsRd1oMd4LEEEipoUKYGuCGv1jK9DUeVGY6yJZc823fmScLpeZ4O+jqmYUjl1fiNm4UGq4sNVtcarNo3W7J6iWGMR4qrAcEw1sBJOwDF2oFuEQklQ2gatcVy6S3hcs/2XWfR4vED5yWOdbo6IHG3hbG5/lAFYnjFeEcMJxam+rNjJKoOH0LW7kNEX1lw0kEPrgUfRTt55bNvuc50+GU8vGIdHeCj244sOKasF6BZt2pGmfHEz/ioroPYiLUWfALvQsS4pRGFEipI2U5BNTYFVXNykPD5hN8yxXCLfctZCK9ipeAQ3hHq1RTsbopyC/ATKqF0RGRrSNuBomG2hsqqNXj/vzWYcQbeWwW+9uPAG5ANcZeT3R5p0THow5VR824W9EsDPSOchhY0hMT8imDQY0R69CO5FzECr44hn62E/PsUspfj2fsP4DclMRKSPFcmbL9hbcHfWHAmFEsR16ajL8koxVvJ4a0kyzCidNI0glPGVX8XuOcoaUYRzVdGzzViGHehRGLVffwWSDxDgV2f5KJxmpIoB1pBnNRbMRoexfLxG541rFwYbW2g5fmENXmaT1iuXU79njQttGD86bGuF2U/KZRytivFmT6IsUD6R8W8l7NfIPRcrbiNgyf7nlUAMGSyg9lYC+NFmdTFNMZTBCQtdThcx0obgy0suXu6wKWMa438Pjhri46tzZcqdp6oIj18enzADKlpNp9zhHNFRlULtyaMlcIzznqcqVlPaUGE7RItzmcSI+daDLaJs+co2THjQ+wg6qaPiOCUBrKLerODSEcYfX3CuZEauDRr5+YjPFzQIQr+av1N+zqJ2DoAiVDEutihQI92RdjTcIu6ljsvlI9i4wi/jnZx34KXaV1nRLWCy0rqkycimslnQWX+bLeUCaiP2anhFtVrOiubzan0zUxnceS/SPTMsO1hzkoqV2lETAGGFtLQk8i3AoJvbpQkN6TcW0F5ZQnltXnK/bckGrw/7nZdx50n2MvNXDGKtVcgwiSCl3GfFMA/iP9qHQZYL1xPzlka+xrfhMcHlCdZFPnVFeR7S8h/t6gHXtT7P2mKV4b6U7qvx8daoXqZj/NYxrcxVfW8zdlQuat2OaP/dU66k/dGmD1o6chkx5CaXSw1PLucbOTXBYZmrjvW3nV8d/TU6pD2P+P7O9GPMeEFJNTJfUHIeB+FOySYBosKo9ryMDpcII+lmj0TRSsjozq39a65iPtBR3Ovjj1WwqW5H72mWOFT3g1NCUNBCl2kMu4tZ/VsWTL6bePD6e3NH05ns8OZI3x+c9ZekW60B1eEra2Rn3UhnlZ+gA2aud82xZ6m0055nbk/42hwSiTWG59IRLctG0+pUtjtz1/CmS/XYUY8yo0xuJPmesngnckrWadsfqXY301/vvgXgMi8AscYAAA==***cx5AR+LCAAAAAAABADdWd1u2zYUvh+wdzjV2sLCENfyT7q51YC4ThAPTRsgQdOm6AVtU
RJniTJIKk79PH2GXfUuL7ZDSZbl+N9V2m03iUjR53zn4/kj9fJiINhI/fHzTwAvX0VhSLg
jk9FsDNn/y88jaht6QLky4JLeKtvo0jDiUgmiWMRhGIWjgN5SAUechcmcvCGCEa4oN+DZW
snH4Uh93rTonvpjxvsB5c5Brg8c6jLOqKAcKjeMBhTeTRGAG5DBkAoOAWUOouxTBicU8eO
cuaPqYSwm4EeCTSKuSABjLTrYaOUFVQkehG3AWRwohjO2MXhfzU2o4NOFIkJZZvvpL7fdF
/jn6EX1mHkIdeATV9lWcZ47YyrUY/vjnBCzmsjQrz792iqsP4ucWNr1wkyXxFTY9VotlLv
zP4miUHOdcatgMibck8Hdl9hlHhwAjwWQQEKHMjnCDXm0keldOKrPcZSbXGmYdm2RJJxe5
OloqGIaBFRcpSs+LRXYXC6wuVFg0/y0I6vv0I0xpLgcEXRjBZwMfJBs4Ks+EVDRhGZeWy6
XjRVcHpq2VVtmPL6oPURYZ9YBid0++ubmoPKj8RXjTjSeSpjlnwOdotrwKmCDIYT0kQE9B
zVYBryOBsmS97Zh1WbDD+nwijnKx0drEBpwSpnno1irqUe58ERPGqqbIHZipSKeKu9YU5i
XUYxbG1KoYCapmo+2BNWqFSDhc4/fMMlwi22jthRe3cjAIbwTzFczsM8ylNuDr0/BTymFy
gkR/TEd+JIG621o/EtsaCzaoMfrwbd+HHgNrhPdpuiPrUL69UifrgP9fB70QwM9J5wGBnQ
igfUVwaDGkHj0NfkcxQi4mVpwvjb6fp9BbhR4bnwH+F1BdApJnnM/f8IGEX9iwHkkWYa4N
Rt9SEYZ3noBbz0xQyelXlcnnCpa/U3g9smkOUW02BntK0QzbkGFxNK9++oLjB3fbE9rUVq
mBKYBJSFO+q0YBU9icfcVYww7F0b7W+TyYsGaPi0WLMusZnp7XQMlaH0qzetlyU8apYLse
nmij2JskP6WMfcK8kuEXugVd1Fwb9/zDgDGTDhYjVWktUhdsphCfwqBZK0Oh+tYKi2wjy2
3p8ozJQfxuGBJ2nFNMNJo5QQXvccWqycz+NR5q3PNpYhpiYymLU/RHWobe589rKzUzXWGf
vhehiKOoueUaeubuy/YKiiazxcU4VyZYdZHXw1iKTHpMY8zOa8p6xDx/Fgif8lOXqhotEv
g7ZPaTxkf45GqrQ9WIZxRX7iYgA8Q6QTDcUg417kX3mnbuX6F2QYcIuFt/y86VEkItwFIi
FndxSMbeNSNAk/BDSb6QgKhfBJrRfhzlIv75j/MWX6uytTRrKRhu1dV8npS0rln/viYVxQ
by3XHKuvwXVt7+p7Vgrnp3I/sB/GeObYbWMSTFl7orC4BXQtp8ATyLYHgyq26hi0pb6yhv
L6C8tYi5fZTEo5enLquVbO2Jjhp91eR/M159b9h83UaQBLzhH7d+L/SUTTsilE8j/hRkCS
xvbzjgUOw2YYR9tDX01SbpT+FK+HuC1YoUVb8NdeQ31hB/vNl90LL7sPuXRSV5ZjpDWVT7
rc5WxbvplnN6S/2YPdasOOA6l2sdBpmNdnIj0sEzV0Bbrz/+2bvabUhuwtI77SjYYw9j08
CldyhBYwPsXYHBDuhstyotdqNjpdUyErLnPOitZ7RXNh6S19O/6DQPGxDjydc6m8G1xRPv
ZS7ge5iKYhIlVkcD1ezer6qH/lt6+BsHC4GZ2274CwQvrg5Gz8bbLUHV4RtPDfu9ZEoa/7
Bvfuqv/nofl/R2e3RJnF/xuHojAhsOd+QkO56cjijUhKPLl5M6x+3YS55VDspuF53c8rgz
nRJfnukv9y9fJZ90vsH0gzhqtsbAAA==*
cX-Webseite: http://www.clickexe.net