티스토리 뷰

개발/QT, QML

QML easing.type 속성

부캐: 개발하는 조대리 2024. 11. 13. 08:47
반응형

QML easing.type

easing.type은 QML 애니메이션에서 애니메이션의 가속/감속 곡선을 결정하는 데 사용하는 속성입니다. 이는 애니메이션의 시작, 중간, 끝 부분에서 속도의 변화를 조절하여 애니메이션을 더욱 부드럽고 자연스럽게 표현할 수 있도록 합니다. 애니메이션이 선형으로 움직이는 대신에 더 현실적이거나 예상 가능한 동작을 하도록 하는 것이 목적입니다.

easing.type은 Easing 객체의 속성으로, 애니메이션의 가속도 프로파일을 정의합니다. 예를 들어, 천천히 시작해서 빠르게 진행한 후 다시 천천히 끝나는 애니메이션을 만들거나, 반대로 급격하게 시작해서 서서히 멈추게 하는 등의 효과를 줄 수 있습니다.

 

 

 

 easing.type의 종류

Easing에는 다양한 타입이 제공되며, 이를 통해 애니메이션의 속도 변화 양상을 설정할 수 있습니다. 아래는 주요 easing.type 값들입니다.

  1. Easing.Linear:
    • 애니메이션이 일정한 속도로 진행됩니다.
    • 시작부터 끝까지 속도 변화 없이 균등하게 움직이는 단순한 애니메이션을 만듭니다.
    • 예: 물체가 직선 경로로 같은 속도로 이동하는 경우.
  2. Easing.InQuad:
    • 애니메이션이 천천히 시작하며, 진행하면서 점점 빠르게 가속됩니다.
    • 물체가 점점 빨라지는 가속 이동 효과가 있습니다.
    • 예: 차가 신호를 받고 출발할 때 천천히 가속하는 모습.
  3. Easing.OutQuad:
    • 애니메이션이 빠르게 시작하고, 점점 느려지면서 멈추는 형태입니다.
    • 종료 시점에서 감속하여 부드럽게 정지합니다.
    • 예: 차가 목적지에 도착할 때 브레이크를 밟아 속도를 줄이는 모습.
  4. Easing.InOutQuad:
    • 천천히 시작해서 빠르게 진행하다가 다시 천천히 멈추는 형태입니다.
    • 시작과 끝 부분이 부드럽고, 중간에 속도가 최고조에 도달합니다.
    • 예: 물체가 출발할 때 천천히 가속하고, 도착할 때 천천히 멈추는 전형적인 움직임.
  5. Easing.InCubic / Easing.OutCubic / Easing.InOutCubic:
    • Cubic 곡선을 사용하여 가속 및 감속의 효과가 더욱 강한 버전입니다.
    • In/Out/ InOut의 패턴은 Quad와 유사하나 가속도와 감속이 더 급격합니다.
  6. Easing.InBounce / Easing.OutBounce:
    • InBounce: 애니메이션이 마치 탄력적인 움직임으로 들어가는 듯한 느낌을 줍니다.
    • OutBounce: 애니메이션이 마치 떨어지다가 바닥에 튕기는 것처럼 움직입니다.
    • 물체가 바닥에 부딪혔다가 몇 번 튕겨서 멈추는 모습을 표현할 때 유용합니다.
  7. Easing.InElastic / Easing.OutElastic:
    • InElastic: 물체가 바운스 되듯이 애니메이션이 시작됩니다.
    • OutElastic: 애니메이션이 마치 고무줄처럼 약간의 탄력을 가지고 멈춥니다.
    • 진동 효과를 줄 때 사용합니다.

 

 

 

 사용 예제

아래는 Rectangle의 위치와 불투명도를 변화시키며 easing.type을 설정한 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: {
                positionAnimation.running = true
            }
        }

        NumberAnimation {
            id: positionAnimation
            target: animatedRect
            property: "x"
            from: 0
            to: parent.width - width
            duration: 1500
            easing.type: Easing.OutBounce
        }
    }
}

설명

  • NumberAnimation은 Rectangle의 x 위치를 애니메이션 합니다.
  • easing.type: Easing.OutBounce: 물체가 움직이다가 마치 바닥에서 튕기는 듯한 효과를 줍니다. 이로 인해 더 재미있고 눈에 띄는 애니메이션을 구현할 수 있습니다.
  • 사용자가 사각형을 클릭하면 애니메이션이 시작됩니다.

 

 

 

 활용 예시

  1. 자연스러운 이동 효과: 물체가 서서히 시작했다가 서서히 멈추도록 설정하여 사용자에게 더욱 부드러운 전환 효과를 제공합니다.
  2. 강조 효과: 버튼이나 중요한 UI 요소가 바운스 되거나 탄성 있는 움직임을 하게 하여 사용자 주의를 끌 수 있습니다.
  3. 애니메이션 패턴 조절: UI 요소가 빠르게 나타났다가 천천히 멈추거나 반대로 천천히 시작하여 갑자기 멈추는 등의 다양한 패턴을 제공하여 상황에 맞는 애니메이션 효과를 만들 수 있습니다.

 

 

 

 결론

  • easing.type 속성은 애니메이션의 속도와 타이밍 곡선을 결정하여, 애니메이션을 더욱 자연스럽고 현실감 있게 만들어줍니다.
  • 이를 사용하면 시작과 끝의 움직임을 조절하여 부드러운 사용자 경험을 제공할 수 있습니다.
  • 다양한 가속 및 감속 패턴을 통해 UI 애니메이션을 개성 있고 매력적인 시각 효과로 만들 수 있으며, 사용자와의 상호작용에서 애플리케이션의 품질과 매력을 향상 시킵니다.

 

easing.type은 애니메이션이 어떻게 움직이는지를 조절함으로써, 사용자 경험에 큰 영향을 미치는 중요한 도구입니다. 이를 적절히 사용하면 애니메이션이 단순히 화면상의 변화를 넘어, 사용자와의 감성적인 연결을 제공할 수 있습니다.

 

 


 

 

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

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

 

 

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

QML의 ListModel과 ListView  (1) 2024.11.16
QML ListView의 contentX  (0) 2024.11.14
QML의 NumberAnimation  (0) 2024.11.12
QML의 ParallelAnimation  (1) 2024.11.11
QML의 positionViewAtIndex 함수  (0) 2024.11.10