FrameAnimation QML Type
アニメーションのフレームが更新されるたびにハンドラをトリガーします。詳細...
Import Statement: | import QtQuick |
Since: | Qt 6.4 |
プロパティ
- currentFrame : int
- elapsedTime : real
- frameTime : real
- paused : bool
- running : bool
- smoothFrameTime : real
信号
方法
詳しい説明
FrameAnimation は、アニメーションが進行し、アニメーションフレームがレンダリングされるたびにアクションをトリガーするために使用できます。スレッドと基本的なレンダリングループについての詳細な情報は、シーングラフについてのドキュメントを参照してください。
一般的なアニメーションでは、NumberAnimation
や他のAnimation
要素を使用することを好みます。これらは、アニメーションを記述する宣言的な方法を提供するからです。
一方、FrameAnimationは、カスタム命令型アニメーションや、以下のようなユースケースで使用する必要があります:
- フレームが更新されるたびに何らかのコードを実行する必要がある場合。例えば、プログレッシブ・レンダリングを使用している場合など。
- アニメーション中にスピードやターゲットが変化する場合、通常のQMLアニメーションでは限界があります。
- より正確なフレーム更新時間が必要な場合、例えばfpsカウンターの場合。
interval
の時間を設定できるTimer
と比較して、FrameAnimation はアニメーションの更新と常に同期して動作します。以下のようなカスタムアニメーションのために短い間隔でTimer
を使用している場合は、よりスムーズなアニメーションのために、代わりに FrameAnimation を使用するように切り替えることを検討してください。
// BAD Timer { interval: 16 repeat: true running: true onTriggered: { // Animate something } } // GOOD FrameAnimation { running: true onTriggered: { // Animate something } }
プロパティの説明
currentFrame : int |
このプロパティは、開始からのフレーム更新数を保持します。フレームアニメーションが再開されると、currentFrame は0
から始まります。
次の例は、フレーム更新に反応する方法を示しています。
FrameAnimation { running: true onTriggered: { // Run code on every frame update. } }
このプロパティは、n番目のフレームごとにのみレンダリングするために使用することもできます。UIに2つの重い要素があり、全体のフレームレートをスムーズな60fpsにするために、これらの重い要素を30fpsでレンダリングし、1つ目は偶数フレームごとに、2つ目は奇数フレームごとにレンダリングするような高度な使い方を考えてみましょう:
FrameAnimation { running: true onTriggered: { if (currentFrame % 2 == 0) updateUIElement1(); else updateUIElement2(); } }
デフォルトでは、frame
は 0 です。
elapsedTime : real |
このプロパティは、前回の開始からの時間(秒)を保持します。
デフォルトでは、elapsedTime
は0である。
frameTime : real |
このプロパティは、前回のフレーム更新からの時間(秒)を保持します。
次の例では、frameTime を使用して、画面のリフレッシュレートと可能な fps 低下に合わせて、速度を変化させながらアイテムをアニメーションさせる方法を示します。
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 } }
デフォルトでは、frameTime
は 0 です。
running : bool |
smoothFrameTime : real |
このプロパティは、直前のフレーム更新からの平滑化時間(秒)を保持します。
次の例では、smoothFrameTime を使用して平均 fps を表示しています。
Text { text: "fps: " + frameAnimation.fps.toFixed(0) } FrameAnimation { id: frameAnimation property real fps: smoothFrameTime > 0 ? (1.0 / smoothFrameTime) : 0 running: true }
デフォルトでは、smoothFrameTime
は 0 です。
シグナル ドキュメント
triggered() |
このシグナルは、FrameAnimation が新しいフレームに進んだときに発せられます。
注: 対応するハンドラはonTriggered
です。
メソッドの説明
pause() |
フレームアニメーションを一時停止する
フレームアニメーションがすでに一時停止されているか、running
されていない場合、このメソッドを呼び出しても効果はありません。pause()
を呼び出すと、paused
プロパティは真になります。
reset() |
フレームアニメーションのプロパティをリセットする
このメソッドを呼び出すと、frame
とelapsedTime
が初期値(0)にリセットされます。このメソッドは、running
またはpaused
プロパティには影響せず、それらが true または false のときに呼び出すことができます。
reset()
restart()
pause()
と の違いは、 は常にプロパティを初期化するのに対し、 は次のフレーム更新時にのみ初期化することです。restart()
reset()
restart()
restart() |
フレームアニメーションを再開する
FrameAnimation が実行中でない場合は開始され、そうでない場合は停止され、初期状態にリセットされてから開始されます。restart()
を呼び出すと、running
プロパティは真になります。
resume() |
一時停止中のフレームアニメーションを再開する
フレームアニメーションが一時停止されていないか、running
されていない場合、このメソッドを呼び出しても効果はありません。resume()
への呼び出し後、paused
プロパティは false になります。
start() |
フレームアニメーションを開始する
フレームアニメーションがすでに実行されている場合、このメソッドを呼び出しても効果はありません。start()
を呼び出すと、running
プロパティは true になります。
stop() |
フレームアニメーションを停止する
フレームアニメーションが実行されていない場合、このメソッドを呼び出しても効果はありません。stop()
を呼び出すと、running
とpaused
の両プロパティは false になります。
© 2025 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.