FrameAnimation QML Type
Déclenche un gestionnaire à chaque mise à jour de l'image d'animation. Plus d'informations...
| Import Statement: | import QtQuick |
| Since: | Qt 6.4 |
Propriétés
- currentFrame : int
- elapsedTime : real
- frameTime : real
- paused : bool
- running : bool
- smoothFrameTime : real
Signaux
Méthodes
Description détaillée
Une FrameAnimation peut être utilisée pour déclencher une action chaque fois que les animations ont progressé et qu'une image d'animation a été rendue. Voir la documentation sur le graphe de scène pour des informations détaillées sur les boucles de rendu de base et les boucles threadées.
Pour les animations générales, il est préférable d'utiliser NumberAnimation et d'autres éléments Animation, car ils fournissent un moyen déclaratif de décrire les animations.
FrameAnimation, en revanche, doit être utilisé pour les animations impératives personnalisées et dans des cas d'utilisation tels que ceux-ci :
- Lorsque vous avez besoin d'exécuter un code à chaque mise à jour d'une image. Ou, par exemple, toutes les deux images, peut-être en utilisant le rendu progressif.
- Lorsque la vitesse ou la cible change au cours de l'animation, les animations QML normales peuvent être trop contraignantes.
- Lorsqu'un temps de mise à jour des images plus précis est nécessaire, par exemple pour un compteur de fps.
Contrairement à Timer qui permet de définir le temps de interval, FrameAnimation fonctionne toujours en synchronisation avec les mises à jour de l'animation. Si vous avez utilisé Timer avec un intervalle court pour des animations personnalisées comme ci-dessous, veuillez envisager d'utiliser FrameAnimation à la place pour des animations plus fluides.
// BAD Timer { interval: 16 repeat: true running: true onTriggered: { // Animate something } } // GOOD FrameAnimation { running: true onTriggered: { // Animate something } }
Documentation sur les propriétés
currentFrame : int [read-only]
Cette propriété contient le nombre de mises à jour de l'image depuis le début. Lorsque l'animation est redémarrée, currentFrame repart de 0.
L'exemple suivant montre comment réagir aux mises à jour des images.
FrameAnimation { running: true onTriggered: { // Run code on every frame update. } }
Cette propriété peut également être utilisée pour n'effectuer le rendu que toutes les nèmes images. Considérons une utilisation avancée où l'interface utilisateur contient deux éléments lourds et pour atteindre un taux de rafraîchissement global de 60 images par seconde, vous décidez de rendre ces éléments lourds à 30 images par seconde, le premier toutes les images paires et le second toutes les images impaires :
FrameAnimation { running: true onTriggered: { if (currentFrame % 2 == 0) updateUIElement1(); else updateUIElement2(); } }
Par défaut, frame est égal à 0.
elapsedTime : real [read-only]
Cette propriété indique le temps (en secondes) écoulé depuis le démarrage précédent.
Par défaut, elapsedTime est égal à 0.
frameTime : real [read-only]
Cette propriété indique le temps (en secondes) écoulé depuis la dernière mise à jour de l'image.
L'exemple suivant montre comment utiliser frameTime pour animer un élément à une vitesse variable, en s'adaptant aux taux de rafraîchissement de l'écran et aux éventuelles baisses d'images par seconde.
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
}
}Par défaut, frameTime est égal à 0.
paused : bool
Si la valeur est true, l'animation de l'image est mise en pause ; sinon, elle reprend.
paused La valeur par défaut est false.
Voir aussi pause() et resume().
running : bool
Si la valeur est true, l'animation de l'image est lancée ; sinon, elle est arrêtée.
running La valeur par défaut est false.
Voir aussi stop(), start() et restart().
smoothFrameTime : real [read-only]
Cette propriété contient le temps lissé (en secondes) depuis la dernière mise à jour de l'image.
L'exemple suivant montre comment utiliser smoothFrameTime pour afficher le nombre moyen d'images par seconde.
Text {
text: "fps: " + frameAnimation.fps.toFixed(0)
}
FrameAnimation {
id: frameAnimation
property real fps: smoothFrameTime > 0 ? (1.0 / smoothFrameTime) : 0
running: true
}Par défaut, smoothFrameTime est égal à 0.
Documentation sur le signal
triggered()
Ce signal est émis lorsque le site FrameAnimation est passé à une nouvelle image.
Remarque : le gestionnaire correspondant est onTriggered.
Documentation de la méthode
void pause()
Met en pause l'animation de l'image.
Si l'animation est déjà en pause ou si elle n'est pas running, l'appel à cette méthode n'a aucun effet. La propriété paused sera vraie à la suite d'un appel à pause().
void reset()
Réinitialise les propriétés d'animation de la trame.
L'appel de cette méthode réinitialise les propriétés frame et elapsedTime à leurs valeurs initiales (0). Cette méthode n'a aucun effet sur les propriétés running ou paused et peut être appelée tant qu'elles sont vraies ou fausses.
La différence entre l'appel à reset() et restart() est que reset() initialise toujours les propriétés tandis que restart() ne les initialise qu'à la prochaine mise à jour de l'image, ce qui ne se produit pas, par exemple, si restart() est immédiatement suivi par pause().
void restart()
Redémarre l'animation de l'image.
Si le site FrameAnimation n'est pas en cours d'exécution, il sera démarré, sinon il sera arrêté, remis à l'état initial et démarré. La propriété running sera vraie à la suite d'un appel à restart().
void resume()
Reprend l'animation d'une image mise en pause.
Si l'animation n'est pas en pause ou n'est pas running, l'appel à cette méthode n'a aucun effet. La propriété paused sera fausse à la suite d'un appel à resume().
void start()
Démarre l'animation de l'image.
Si l'animation est déjà en cours, l'appel à cette méthode n'a aucun effet. La propriété running sera vraie à la suite d'un appel à start().
void stop()
Arrête l'animation de l'image.
Si l'animation n'est pas en cours, l'appel à cette méthode n'a aucun effet. Les propriétés running et paused seront toutes deux fausses à la suite d'un appel à stop().
© 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.