Auf dieser Seite

FrameAnimation QML Type

Löst bei jeder Aktualisierung des Animationsframes einen Handler aus. Mehr...

Import Statement: import QtQuick
Since: Qt 6.4

Eigenschaften

Signale

Methoden

Ausführliche Beschreibung

Eine `FrameAnimation` kann verwendet werden, um jedes Mal eine Aktion auszulösen, wenn die Animation voranschreitet und ein Animationsframe gerendert wurde. Ausführliche Informationen zu den Thread-basierten und grundlegenden Render-Schleifen finden Sie in der Dokumentation zum Szenenbaum.

Für allgemeine Animationen sollten Sie vorzugsweise „ NumberAnimation “ und andere Elemente des „ Animation “ verwenden, da diese eine deklarative Möglichkeit zur Beschreibung der Animationen bieten.

„FrameAnimation“ sollte hingegen für benutzerdefinierte imperativ programmierte Animationen und in folgenden Anwendungsfällen verwendet werden:

  • Wenn Sie bei jeder Frame-Aktualisierung Code ausführen müssen. Oder z. B. bei jedem zweiten Frame, möglicherweise unter Verwendung von progressivem Rendering.
  • Wenn sich die Geschwindigkeit oder das Ziel während der Animation ändert, können normale QML-Animationen zu einschränkend sein.
  • Wenn eine genauere Aktualisierungszeit pro Frame erforderlich ist, z. B. für einen FPS-Zähler.

Im Vergleich zu „ Timer “, bei dem die Zeit für „ interval “ festgelegt werden kann, läuft „FrameAnimation“ immer synchron mit den Animationsaktualisierungen. Wenn Sie „ Timer “ mit einem kurzen Intervall für benutzerdefinierte Animationen wie unten gezeigt verwendet haben, sollten Sie in Betracht ziehen, stattdessen auf „FrameAnimation“ umzusteigen, um flüssigere Animationen zu erzielen.

// BAD
Timer {
    interval: 16
    repeat: true
    running: true
    onTriggered: {
        // Animate something
    }
}

// GOOD
FrameAnimation {
    running: true
    onTriggered: {
        // Animate something
    }
}

Dokumentation zu den Eigenschaften

currentFrame : int [read-only]

Diese Eigenschaft enthält die Anzahl der Frame-Aktualisierungen seit dem Start. Wenn die Frame-Animation neu gestartet wird, beginnt „currentFrame“ bei „ 0 “.

Das folgende Beispiel zeigt, wie man auf Frame-Aktualisierungen reagiert.

FrameAnimation {
    running: true
    onTriggered: {
        // Run code on every frame update.
    }
}

Diese Eigenschaft kann auch verwendet werden, um nur jeden n-ten Frame zu rendern. Stellen Sie sich eine fortgeschrittene Anwendungsmöglichkeit vor, bei der die Benutzeroberfläche zwei rechenintensive Elemente enthält und Sie, um eine flüssige Gesamtbildrate von 60 fps zu erreichen, beschließen, diese rechenintensiven Elemente mit 30 fps zu rendern, wobei das erste Element in jedem geraden Frame und das zweite in jedem ungeraden Frame angezeigt wird:

FrameAnimation {
    running: true
    onTriggered: {
        if (currentFrame % 2 == 0)
            updateUIElement1();
        else
            updateUIElement2();
   }
}

Standardmäßig ist „ frame “ auf 0 gesetzt.

elapsedTime : real [read-only]

Diese Eigenschaft enthält die Zeit (in Sekunden) seit dem letzten Start.

Standardmäßig ist „ elapsedTime “ auf 0 gesetzt.

frameTime : real [read-only]

Diese Eigenschaft enthält die Zeit (in Sekunden) seit der letzten Bildaktualisierung.

Das folgende Beispiel zeigt, wie man mit „frameTime“ ein Element mit variierender Geschwindigkeit animiert und dabei die Bildwiederholfrequenz des Bildschirms sowie mögliche FPS-Einbrüche berücksichtigt.

Rectangle {
    id: rect
    property real speed: 90
    width: 100
    height: 100
    color: "red"
    anchors.centerIn: parent
}

FrameAnimation {
    id: frameAnimation
    running: true
    onTriggered: {
        // Rotate the item speed-degrees / second.
        rect.rotation += rect.speed * frameTime
    }
}

Standardmäßig ist „ frameTime “ auf 0 gesetzt.

paused : bool

Wenn auf „true“ gesetzt, wird die Frame-Animation angehalten; andernfalls wird sie fortgesetzt.

paused Standardwert ist „false“.

Siehe auch pause() und resume().

running : bool

Wird auf „true“ gesetzt, wird die Frame-Animation gestartet; andernfalls wird sie angehalten.

running Standardwert ist „false“.

Siehe auch stop(), start() und restart().

smoothFrameTime : real [read-only]

Diese Eigenschaft enthält die geglättete Zeit (in Sekunden) seit der letzten Bildaktualisierung.

Das folgende Beispiel zeigt, wie man mit „smoothFrameTime“ die durchschnittliche Bildrate (fps) anzeigt.

Text {
    text: "fps: " + frameAnimation.fps.toFixed(0)
}

FrameAnimation {
    id: frameAnimation
    property real fps: smoothFrameTime > 0 ? (1.0 / smoothFrameTime) : 0
    running: true
}

Standardmäßig ist „ smoothFrameTime “ auf 0 gesetzt.

Signal-Dokumentation

triggered()

Dieses Signal wird ausgegeben, wenn der FrameAnimation zu einem neuen Frame übergegangen ist.

Hinweis: Der entsprechende Handler ist „ onTriggered “.

Methodendokumentation

void pause()

Hält die Frame-Animation an.

Wenn die Frame-Animation bereits angehalten ist oder nicht „ running “ ist, hat der Aufruf dieser Methode keine Auswirkung. Die Eigenschaft „ paused “ ist nach einem Aufruf von „ pause() “ auf „true“ gesetzt.

void reset()

Setzt die Eigenschaften der Frame-Animation zurück.

Der Aufruf dieser Methode setzt die Eigenschaften „ frame “ und „ elapsedTime “ auf ihre Anfangswerte (0) zurück. Diese Methode hat keine Auswirkungen auf die Eigenschaften „ running “ oder „ paused “ und kann aufgerufen werden, während diese auf „true“ oder „false“ gesetzt sind.

Der Unterschied zwischen dem Aufruf von „ reset() “ und „ restart() “ besteht darin, dass „ reset() “ die Eigenschaften immer sofort initialisiert, während „ restart() “ sie erst bei der nächsten Frame-Aktualisierung initialisiert – was beispielsweise nicht geschieht, wenn auf „ restart() “ unmittelbar „ pause() “ folgt.

void restart()

Startet die Frame-Animation neu.

Wenn der „ FrameAnimation “ nicht läuft, wird er gestartet; andernfalls wird er angehalten, in den Ausgangszustand zurückgesetzt und gestartet. Die Eigenschaft „ running “ ist nach einem Aufruf von „ restart() “ auf „true“ gesetzt.

void resume()

Setzt eine angehaltene Frame-Animation fort.

Wenn die Frame-Animation nicht angehalten ist oder nicht im Status „ running “ ist, hat der Aufruf dieser Methode keine Auswirkung. Die Eigenschaft „ paused “ ist nach einem Aufruf von „ resume() “ auf „false“ gesetzt.

void start()

Startet die Frame-Animation.

Wenn die Frame-Animation bereits läuft, hat der Aufruf dieser Methode keine Wirkung. Die Eigenschaft „ running “ ist nach einem Aufruf von „ start() “ auf „true“ gesetzt.

void stop()

Hält die Frame-Animation an.

Wenn die Frame-Animation nicht läuft, hat der Aufruf dieser Methode keine Auswirkung. Nach einem Aufruf von „ stop() “ sind sowohl die Eigenschaft „ running “ als auch die Eigenschaft „ paused “ auf „false“ gesetzt.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.