FrameAnimation QML Type
Löst bei jeder Aktualisierung eines Animationsbildes einen Handler aus. Mehr...
| Import Statement: | import QtQuick |
| Since: | Qt 6.4 |
Eigenschaften
- currentFrame : int
- elapsedTime : real
- frameTime : real
- paused : bool
- running : bool
- smoothFrameTime : real
Signale
Methoden
Detaillierte Beschreibung
Eine FrameAnimation kann verwendet werden, um jedes Mal eine Aktion auszulösen, wenn die Animationen fortgeschritten sind und ein Animationsframe gerendert wurde. In der Dokumentation zum Scene Graph finden Sie ausführliche Informationen zu den Threaded und Basic Render Loops.
Für allgemeine Animationen sollten Sie NumberAnimation und andere Animation Elemente verwenden, da diese eine deklarative Möglichkeit zur Beschreibung der Animationen bieten.
FrameAnimation hingegen sollte für benutzerdefinierte, zwingende Animationen und in Anwendungsfällen wie diesen verwendet werden:
- Wenn Sie bei jedem Frame-Update einen Code ausführen müssen. Oder z.B. jedes zweite Bild, vielleicht mit progressivem Rendering.
- Wenn sich die Geschwindigkeit / das Ziel während der Animation ändert, können normale QML-Animationen zu einschränkend sein.
- Wenn eine genauere Bildaktualisierungszeit benötigt wird, z.B. für den fps-Zähler.
Im Vergleich zu Timer, wo die interval Zeit eingestellt werden kann, läuft FrameAnimation immer synchron mit den Animations-Updates. Wenn Sie Timer mit einem kurzen Intervall für benutzerdefinierte Animationen wie unten verwendet haben, ziehen Sie bitte in Betracht, stattdessen FrameAnimation zu verwenden, um flüssigere Animationen zu erhalten.
// BAD Timer { interval: 16 repeat: true running: true onTriggered: { // Animate something } } // GOOD FrameAnimation { running: true onTriggered: { // Animate something } }
Dokumentation der Eigenschaft
currentFrame : int [read-only]
Diese Eigenschaft enthält die Anzahl der Frame-Aktualisierungen seit dem Start. Wenn die Bildanimation neu gestartet wird, beginnt currentFrame bei 0.
Das folgende Beispiel zeigt, wie man auf Frame-Updates reagieren kann.
FrameAnimation { running: true onTriggered: { // Run code on every frame update. } }
Diese Eigenschaft kann auch verwendet werden, um nur jedes n-te Bild zu rendern. Betrachten Sie eine fortgeschrittene Anwendung, bei der die Benutzeroberfläche zwei schwere Elemente enthält, und um eine gleichmäßige Gesamtbildrate von 60 Bildern pro Sekunde zu erreichen, beschließen Sie, diese schweren Elemente mit 30 Bildern pro Sekunde zu rendern, das erste bei jedem geraden Bild und das zweite bei jedem ungeraden Bild:
FrameAnimation { running: true onTriggered: { if (currentFrame % 2 == 0) updateUIElement1(); else updateUIElement2(); } }
Standardmäßig ist frame auf 0 eingestellt.
elapsedTime : real [read-only]
Diese Eigenschaft enthält die Zeit (in Sekunden) seit dem letzten Start.
Standardmäßig ist elapsedTime gleich 0.
frameTime : real [read-only]
Diese Eigenschaft enthält die Zeit (in Sekunden) seit der letzten Bildaktualisierung.
Das folgende Beispiel zeigt, wie Sie frameTime verwenden können, um Elemente mit unterschiedlicher Geschwindigkeit zu animieren und sich dabei an die Bildwiederholrate und mögliche fps-Einbrüche anzupassen.
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 gleich 0.
paused : bool
Bei true wird die Bildanimation angehalten, andernfalls wird sie fortgesetzt.
paused Der Standardwert ist false.
Siehe auch pause() und resume().
running : bool
Bei true wird die Bildanimation gestartet, andernfalls wird sie gestoppt.
running Der 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 smoothFrameTime verwendet werden kann, um die durchschnittlichen fps anzuzeigen.
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 gleich 0.
Signal-Dokumentation
triggered()
Dieses Signal wird ausgegeben, wenn FrameAnimation zu einem neuen Frame übergegangen ist.
Hinweis: Der entsprechende Handler ist onTriggered.
Dokumentation der Methode
void pause()
Hält die Bildanimation an.
Wenn die Frame-Animation bereits angehalten oder nicht running ist, hat der Aufruf dieser Methode keine Wirkung. Die Eigenschaft paused wird nach einem Aufruf von pause() auf true gesetzt.
void reset()
Setzt die Eigenschaften der Rahmenanimation zurück.
Durch den Aufruf dieser Methode werden frame und elapsedTime auf ihre Anfangswerte (0) zurückgesetzt. Diese Methode hat keine Auswirkung auf die Eigenschaften running oder paused und kann aufgerufen werden, während sie true oder false sind.
Der Unterschied zwischen dem Aufruf von reset() und restart() besteht darin, dass reset() die Eigenschaften immer initialisiert, während restart() sie nur beim nächsten Frame-Update initialisiert, was z.B. nicht geschieht, wenn restart() unmittelbar von pause() gefolgt wird.
void restart()
Startet die Bildanimation neu.
Wenn FrameAnimation noch nicht läuft, wird sie gestartet, andernfalls wird sie angehalten, auf den Anfangszustand zurückgesetzt und gestartet. Die Eigenschaft running wird nach einem Aufruf von restart() auf true gesetzt.
void resume()
Setzt eine angehaltene Bildanimation fort.
Wenn die Frame-Animation nicht angehalten oder nicht running ist, hat der Aufruf dieser Methode keine Wirkung. Die Eigenschaft paused wird nach einem Aufruf von resume() auf false gesetzt.
void start()
Startet die Rahmenanimation.
Wenn die Rahmenanimation bereits läuft, hat der Aufruf dieser Methode keine Auswirkungen. Die Eigenschaft running wird nach einem Aufruf von start() auf true gesetzt.
void stop()
Hält die Bildanimation an.
Wenn die Rahmenanimation nicht läuft, hat der Aufruf dieser Methode keine Auswirkungen. Die Eigenschaften running und paused sind nach einem Aufruf von stop() beide falsch.
© 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.