티스토리 뷰

개발/QT, QML

QML의 NumberAnimation

부캐: 개발하는 조대리 2024. 11. 12. 18:24
반응형

QML의 NumberAnimation

NumberAnimation은 QML에서 숫자 속성을 애니메이션 하는 데 사용되는 애니메이션 요소입니다. 이는 특정 속성(예: 위치, 크기 등)의 값을 부드럽게 변화시켜 사용자에게 시각적인 효과를 제공합니다. 위치 변화, 크기 조정, 불투명도 같은 수치적 변화를 애니메이션으로 표현할 때 자주 사용됩니다.

 

 

 

 기본 문법

NumberAnimation은 targetproperty를 지정하여 특정 객체의 속성을 애니메이션 하며, 변화의 시작과 끝을 설정할 수 있습니다.

NumberAnimation {
    target: someObject
    property: "x"
    from: 0
    to: 100
    duration: 1000
}
  • target: 애니메이션할 대상 객체입니다. 예를 들어, Rectangle과 같은 QML 요소를 지정할 수 있습니다.
  • property: 애니메이션할 대상 속성입니다. x, y, width 등과 같은 숫자형 속성을 지정할 수 있습니다.
  • from: 애니메이션의 시작 값입니다. 생략할 경우 현재 속성을 기본으로 사용합니다.
  • to: 애니메이션의 끝 값입니다.
  • duration: 애니메이션이 얼마나 오래 지속될지를 밀리초 단위로 지정합니다.

 

 

 

 주요 속성

  • target: 애니메이션이 적용될 객체를 지정합니다.
  • property: 애니메이션할 속성의 이름을 지정합니다.
  • from: 애니메이션의 시작 값을 설정합니다. 보통 이 값은 생략되고 현재 속성 값에서 시작합니다.
  • to: 애니메이션의 종료 값을 설정합니다.
  • duration: 애니메이션의 지속 시간을 설정합니다. 밀리초 단위로 지정되며, 애니메이션의 속도를 결정합니다.
  • easing: 애니메이션의 속도 곡선을 설정하여, 애니메이션의 움직임을 좀 더 자연스럽게 만들 수 있습니다. (예: Easing.InOutQuad, Easing.Linear 등)

 

 

 

 사용 예제

다음 예제는 Rectangle 요소를 좌우로 이동시키는 NumberAnimation을 사용한 간단한 예제입니다.

import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 640
    height: 480

    Rectangle {
        id: animatedRect
        width: 100
        height: 100
        color: "blue"
        anchors.centerIn: parent

        MouseArea {
            anchors.fill: parent
            onClicked: {
                animation.running = true // 클릭 시 애니메이션 시작
            }
        }

        NumberAnimation {
            id: animation
            target: animatedRect
            property: "x"
            from: 0
            to: parent.width - width
            duration: 1000
            easing.type: Easing.InOutQuad
        }
    }
}

설명

  • Rectangle 요소는 기본적으로 파란색 사각형으로, ApplicationWindow의 중앙에 위치합니다.
  • NumberAnimation은 사각형의 x 속성을 애니메이션합니다.
    • from과 to 값을 설정하여 x 값을 왼쪽 끝에서 오른쪽 끝으로 이동시키는 애니메이션을 실행합니다.
    • duration은 1000밀리 초(1초) 동안 지속됩니다.
    • easing.type: Easing.InOutQuad부드러운 가속과 감속 효과를 추가하여 좀 더 자연스러운 움직임을 만듭니다.
  • 사용자가 사각형을 클릭하면 onClicked 핸들러에서 animation.running = true로 설정하여 애니메이션을 실행합니다.

 

 

 

 주요 속성 설명

  • duration: 애니메이션이 지속되는 시간으로, 애니메이션의 속도를 결정합니다. 예를 들어 duration: 2000이면 애니메이션이 2초 동안 진행됩니다.
  • easing: 애니메이션의 가속/감속 패턴을 설정합니다. 다양한 타입을 사용하여 움직임을 더 자연스럽게 만들 수 있습니다.
    • Easing.Linear: 일정한 속도로 움직입니다.
    • Easing.InOutQuad: 천천히 시작했다가 빠르게 진행한 후, 다시 천천히 멈춥니다. 흔히 부드러운 움직임을 표현할 때 사용됩니다.
    • Easing.OutBounce: 끝날 때 탄력적으로 튕기는 효과를 줍니다.

 

 

 

 PropertyAnimation과의 관계

  • NumberAnimation숫자형 속성을 애니메이션 하는 데 사용되는 특수화된 애니메이션 객체입니다.
  • 반면 PropertyAnimation은 다양한 타입의 속성(예: 색상, 위치 등)을 애니메이션 할 수 있으며, 더 일반적인 형태의 애니메이션 객체입니다.
  • 둘 다 비슷한 방식으로 사용되지만, NumberAnimation은 주로 정수나 부동 소수점 속성에 적합합니다.

 

 

 

 활용 예시

  1. 위치 이동: 객체를 부드럽게 좌우 또는 상하로 이동시키기 위해 사용합니다. 예를 들어, 사용자 인터페이스에서 화면 요소를 이동하거나, 강조 표시하기 위한 애니메이션 효과를 만들 수 있습니다.
  2. 크기 변경: width나 height 같은 속성을 애니메이션 하여 객체의 크기를 동적으로 변경하는 데 사용할 수 있습니다.
  3. 불투명도 조절: 투명도 속성을 애니메이션하여 요소가 서서히 나타나거나 사라지도록 하는 데 유용합니다.

 

 

 

 결론

  • NumberAnimation은 QML에서 특정 숫자 속성을 부드럽게 변화시키기 위해 사용되는 애니메이션 도구입니다.
  • 위치 이동, 크기 변경, 불투명도 변화 등 다양한 수치적 변화에 적합하며, 이를 통해 자연스럽고 다채로운 사용자 경험을 제공할 수 있습니다.
  • duration과 easing 속성을 잘 활용하면 보다 부드럽고 자연스러운 애니메이션 효과를 구현할 수 있습니다.

 

NumberAnimation은 사용자 인터페이스의 동적 요소를 부드럽게 제어하는 데 매우 유용하며, 이를 통해 매력적인 시각적 효과를 구현할 수 있습니다. 애니메이션이 적용된 UI는 사용자 경험을 향상하고, 애플리케이션을 더욱 생동감 있게 만들어 줍니다.

 

 


 

 

개인적으로 학습하면서 정리한 내용입니다.
잘못된 내용이 있을 경우 알려주시면 확인 후 수정 및 반영하도록 하겠습니다.

오늘도 감사합니다.(__)

'개발 > QT, QML' 카테고리의 다른 글

QML ListView의 contentX  (0) 2024.11.14
QML easing.type 속성  (0) 2024.11.13
QML의 ParallelAnimation  (1) 2024.11.11
QML의 positionViewAtIndex 함수  (0) 2024.11.10
[QT,QML] Qt의 QAbstractListModel  (0) 2024.11.09