Sur cette page

FrameAnimation QML Type

Déclenche un gestionnaire à chaque mise à jour d'image d'animation. En savoir plus...

Import Statement: import QtQuick
Since: Qt 6.4

Propriétés

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. Consultez la documentation relative au graphe de scène pour obtenir des informations détaillées sur les boucles de rendu threadées et de base.

Pour les animations générales, privilégiez l’utilisation d’ NumberAnimation s et d’autres éléments d’ Animation, car ceux-ci offrent une approche déclarative pour 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 devez exécuter du code à chaque mise à jour d’image. Ou, par exemple, une image sur deux, éventuellement en utilisant le rendu progressif.
  • Lorsque la vitesse ou la cible change au cours de l’animation, les animations QML standard peuvent s’avérer trop restrictives.
  • Lorsqu’un temps de mise à jour d’image plus précis est nécessaire, par exemple pour un compteur d’images par seconde.

Contrairement à ` Timer `, qui permet de définir la durée de l’ interval, `FrameAnimation` s’exécute 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, pensez à passer à `FrameAnimation` pour obtenir des animations plus fluides.

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

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

Documentation des propriétés

currentFrame : int [read-only]

Cette propriété contient le nombre d'actualisations d'images depuis le début. Lorsque l'animation par images est relancée, la propriété `currentFrame` commence à la valeur ` 0`.

L'exemple suivant montre comment réagir aux mises à jour d'images.

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

Cette propriété peut également être utilisée pour n'afficher qu'une image sur n. Imaginons un cas d'utilisation avancé où l'interface utilisateur contient deux éléments gourmands en ressources et où, pour atteindre une fréquence d'images globale fluide de 60 fps, vous décidez d'afficher ces éléments à 30 fps, le premier sur toutes les images paires et le second sur toutes les images impaires :

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

Par défaut, la valeur de ` frame ` est 0.

elapsedTime : real [read-only]

Cette propriété contient la durée (en secondes) écoulée depuis le dernier démarrage.

Par défaut, la valeur « elapsedTime » est égale à 0.

frameTime : real [read-only]

Cette propriété contient la durée (en secondes) écoulée 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 fréquences de rafraîchissement de l'écran et aux éventuelles baisses de fréquence d'images.

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, la valeur de ` frameTime ` est égale à 0.

paused : bool

Si la valeur est « true », l'animation des images est mise en pause ; dans le cas contraire, elle reprend.

paused La valeur par défaut est « false ».

Voir également pause() et resume().

running : bool

Si la valeur est « true », cela lance l'animation image par image ; dans le cas contraire, cela l'arrête.

running La valeur par défaut est « false ».

Voir également stop(), start() et restart().

smoothFrameTime : real [read-only]

Cette propriété contient le temps lissé (en secondes) écoulé 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, la valeur de « smoothFrameTime » est égale à 0.

Documentation sur les signaux

triggered()

Ce signal est émis lorsque l'FrameAnimation e est passé à une nouvelle trame.

Remarque : le gestionnaire correspondant est onTriggered.

Documentation de la méthode

void pause()

Met en pause l'animation des images.

Si l'animation par images est déjà en pause ou si elle n'est pas en cours d'running, l'appel de cette méthode n'a aucun effet. La propriété paused prendra la valeur true après un appel à pause().

void reset()

Réinitialise les propriétés d'animation des images.

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 que celles-ci soient à « true » ou à « false ».

La différence entre l’appel de ` reset() ` et celui de ` restart() ` réside dans le fait que ` reset() ` initialise toujours les propriétés, tandis que ` restart() ` ne les initialise qu’à la prochaine mise à jour d’image, ce qui ne se produit pas, par exemple, si ` restart() ` est immédiatement suivi de ` pause()`.

void restart()

Relance l'animation des images.

Si l'FrameAnimation ne s'exécute pas, elle sera lancée ; dans le cas contraire, elle sera arrêtée, réinitialisée à son état initial, puis relancée. La propriété running prendra la valeur « true » après un appel à restart().

void resume()

Reprend une animation image par image mise en pause.

Si l'animation par images n'est pas en pause ou n'est pas en mode « running », l'appel de cette méthode n'a aucun effet. La propriété « paused » prendra la valeur «false» après un appel à « resume() ».

void start()

Lance l'animation image par image.

Si l'animation par images est déjà en cours d'exécution, l'appel de cette méthode n'a aucun effet. La propriété « running » prendra la valeur « true » après un appel à « start() ».

void stop()

Arrête l'animation d'images.

Si l'animation par images n'est pas en cours d'exécution, l'appel de cette méthode n'a aucun effet. Les propriétés « running » et « paused » prendront toutes deux la valeur « false » après 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.