FrameAnimation QML Type

모든 애니메이션 프레임 업데이트 시 핸들러를 트리거합니다. 더 보기...

Import Statement: import QtQuick
Since: Qt 6.4

속성

신호

방법

상세 설명

프레임 애니메이션은 애니메이션이 진행되고 애니메이션 프레임이 렌더링될 때마다 액션을 트리거하는 데 사용할 수 있습니다. 스레드 및 기본 렌더 루프에 대한 자세한 내용은 씬 그래프에 대한 설명서를 참조하세요.

일반 애니메이션의 경우 NumberAnimation 및 기타 Animation 요소는 애니메이션을 설명하는 선언적 방법을 제공하므로 사용하는 것이 좋습니다.

반면 프레임 애니메이션은 커스텀 명령형 애니메이션과 이와 같은 사용 사례에 사용해야 합니다:

  • 매 프레임 업데이트마다 일부 코드를 실행해야 하는 경우. 또는 매 프레임마다 프로그레시브 렌더링을 사용하는 경우 등입니다.
  • 애니메이션 도중 속도/타겟이 변경되는 경우 일반 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 [read-only]

이 속성은 시작 이후 프레임 업데이트 횟수를 보유합니다. 프레임 애니메이션이 다시 시작되면 currentFrame은 0 에서 시작합니다.

다음 예시는 프레임 업데이트에 반응하는 방법을 보여줍니다.

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

이 프로퍼티는 n번째 프레임마다 렌더링하는 데에도 사용할 수 있습니다. UI에 두 개의 무거운 요소가 포함되어 있고 전체 프레임 속도를 60fps로 부드럽게 하기 위해 이 무거운 요소를 짝수 프레임마다 한 개씩, 홀수 프레임마다 두 개씩 30fps로 렌더링하는 고급 사용법을 예로 들어 보겠습니다:

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

기본적으로 frame 은 0입니다.


elapsedTime : real [read-only]

이 속성은 이전 시작 이후 시간(초)을 보유합니다.

기본적으로 elapsedTime 은 0입니다.


frameTime : real [read-only]

이 속성은 이전 프레임 업데이트 이후의 시간(초)을 보유합니다.

다음 예는 frameTime을 사용하여 화면 새로 고침 빈도 및 가능한 프레임 수 감소에 따라 다양한 속도로 항목에 애니메이션을 적용하는 방법을 보여줍니다.

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입니다.


paused : bool

true로 설정하면 프레임 애니메이션이 일시 중지되고, 그렇지 않으면 다시 시작됩니다.

paused 기본값은 false입니다.

pause() 및 resume()도 참조하세요 .


running : bool

true로 설정하면 프레임 애니메이션을 시작하고, 그렇지 않으면 중지합니다.

running 기본값은 false입니다.

stop(), start() 및 restart()도 참조하십시오 .


smoothFrameTime : real [read-only]

이 속성은 이전 프레임 업데이트 이후의 스무딩 시간(초)을 보유합니다.

다음 예시는 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()

프레임 애니메이션 속성을 재설정합니다.

이 메서드를 호출하면 frameelapsedTime 이 초기값(0)으로 재설정됩니다. 이 메서드는 running 또는 paused 속성에는 영향을 미치지 않으며 해당 속성이 참 또는 거짓인 상태에서 호출할 수 있습니다.

reset()restart() 호출의 차이점은 reset() 는 항상 프로퍼티를 초기화하는 반면 restart() 는 다음 프레임 업데이트 시에만 초기화하며, restart() 바로 뒤에 pause() 가 오는 경우와 같은 경우에는 초기화되지 않는다는 것입니다.


restart()

프레임 애니메이션을 다시 시작합니다.

FrameAnimation 가 실행되고 있지 않으면 시작되고, 그렇지 않으면 중지되고 초기 상태로 재설정된 후 시작됩니다. running 속성은 restart() 을 호출한 후에 참이 됩니다.


resume()

일시 중지된 프레임 애니메이션을 다시 시작합니다.

프레임 애니메이션이 일시 중지되지 않았거나 running 이 아닌 경우 이 메서드를 호출해도 아무런 효과가 없습니다. resume() 을 호출하면 paused 속성은 false가 됩니다.


start()

프레임 애니메이션을 시작합니다.

프레임 애니메이션이 이미 실행 중인 경우 이 메서드를 호출해도 아무런 효과가 없습니다. start() 을 호출하면 running 속성은 참이 됩니다.


stop()

프레임 애니메이션을 중지합니다.

프레임 애니메이션이 실행되고 있지 않은 경우 이 메서드를 호출해도 아무런 효과가 없습니다. runningpaused 속성은 모두 stop() 을 호출한 후 거짓이 됩니다.


© 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.