Showing results 1 to 2 of 2

Thread: Bewegung animieren

  1. #1
    Join Date
    26.02.2018
    Posts
    4

    Frage Bewegung animieren

    Ist es möglich die Bewegung eines Elements zu animieren? Momentan bin ich mir nur bewusst, dass man ein Element in den beiden Endstellungen darstellen kann, aber ist es möglich den Weg dort hin zu animieren ?
    Beispiel: Die Bewegung eines Krans von einem Ende des Bildschirms zum anderen soll flüssig dargestellt werden, wenn ein Button aktiviert wird.
    Ich hoffe ihr könnt mir weiterhelfen.

    Gruß Kording
    Last edited by Kording : 13th March 2018 at 16:05

  2. #2
    Join Date
    02.05.2017
    Posts
    28

    Default Re: Bewegung animieren

    Hallo Kording,

    die Herangehensweise die ich verwendet habe ist ein zenon Logic / Add-In / API Programm. Dafür bräuchten wir folgende Variablen:
    - Variablen {startX}, {endX}, {startY}, {endY}, {dynX}, {dynY} für die jeweiligen Koordinaten. DynX und DynY werden im Editor ans Element gelinkt.
    - Eine Variable {progress} für die aktuelle Position am Pfad (Kommazahl von 0 bis 1)
    - Eine Variable {curTime} für den aktuellen Zeitstempel in Millisekunden
    - Eine Variable {lastTime} für den letzten Zeitstempel in Millisekunden
    - Eine Variable {dt} für die Differenz zwischen den beiden Zeitstempeln
    - Eine Variable {frameStep}, z.B. (1 / 60)

    Nun zur Programmlogik für jeden Zyklus:
    - {curTime} wird auf die aktuelle Zeit gesetzt
    - {dt} wird auf '{dt} + min(1, ({curTime} - {lastTime}) / 1000)' gesetzt
    - While-Schleife mit der Bedingung '{dt} > {frameStep}'
        - Darin wird bei jedem Zyklus {dt} auf '{dt} - {frameStep}' gesetzt, dann wird {progress} um eine definierte StepSize (z.b. 0.00117) erhöht.
    - {dynX} wird auf 'progress * ({endX} - {startX})' gesetzt
    - {dynY} wird auf 'progress * ({endY} - {startY})' gesetzt
    - {lastTime} wird auf {curTime} gesetzt


    Diese Methode hat folgende Vorteile:
    - Funktioniert mit jeder Wiederholungsrate. D.h. egal was in zenon Logic als Zykluszeit definiert ist, das Objekt kommt immer mit der gleichen Geschwinigkeit am Ziel an. Jedoch kommt es natürlich zu Rucklern, je höher die Zykluszeit ist.
    - Funktioniert auch für diagonale Pfade
    - Kann unendlich erweitert werden (z.B. für Bezier-Kurven Animation)

    Im Anhang befindet sich eine Demonstration


    LG
    Lukas
    Attached Thumbnails Attached Thumbnails 2018-03-20_12h28_31.gif  

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •