FrameAnimation QML Type
모든 애니메이션 프레임 업데이트 시 핸들러를 트리거합니다. 더 보기...
Import Statement: | import QtQuick |
Since: | Qt 6.4 |
속성
- currentFrame : int
- elapsedTime : real
- frameTime : real
- paused : bool
- running : bool
- smoothFrameTime : real
신호
방법
상세 설명
프레임 애니메이션은 애니메이션이 진행되고 애니메이션 프레임이 렌더링될 때마다 액션을 트리거하는 데 사용할 수 있습니다. 스레드 및 기본 렌더 루프에 대한 자세한 내용은 씬 그래프에 대한 설명서를 참조하세요.
일반 애니메이션의 경우 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 |
이 속성은 시작 이후 프레임 업데이트 횟수를 보유합니다. 프레임 애니메이션이 다시 시작되면 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 |
이 속성은 이전 시작 이후 시간(초)을 보유합니다.
기본적으로 elapsedTime
은 0입니다.
frameTime : real |
이 속성은 이전 프레임 업데이트 이후의 시간(초)을 보유합니다.
다음 예는 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 |
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
속성에는 영향을 미치지 않으며 해당 속성이 참 또는 거짓인 상태에서 호출할 수 있습니다.
reset()
와 restart()
호출의 차이점은 reset()
는 항상 프로퍼티를 초기화하는 반면 restart()
는 다음 프레임 업데이트 시에만 초기화하며, restart()
바로 뒤에 pause()
가 오는 경우와 같은 경우에는 초기화되지 않는다는 것입니다.
restart() |
프레임 애니메이션을 다시 시작합니다.
FrameAnimation 가 실행되고 있지 않으면 시작되고, 그렇지 않으면 중지되고 초기 상태로 재설정된 후 시작됩니다. running
속성은 restart()
을 호출한 후에 참이 됩니다.
resume() |
일시 중지된 프레임 애니메이션을 다시 시작합니다.
프레임 애니메이션이 일시 중지되지 않았거나 running
이 아닌 경우 이 메서드를 호출해도 아무런 효과가 없습니다. resume()
을 호출하면 paused
속성은 false가 됩니다.
start() |
프레임 애니메이션을 시작합니다.
프레임 애니메이션이 이미 실행 중인 경우 이 메서드를 호출해도 아무런 효과가 없습니다. start()
을 호출하면 running
속성은 참이 됩니다.
stop() |
프레임 애니메이션을 중지합니다.
프레임 애니메이션이 실행되고 있지 않은 경우 이 메서드를 호출해도 아무런 효과가 없습니다. running
및 paused
속성은 모두 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.