티스토리 뷰

개발/QT, QML

QML의 ParallelAnimation

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

QML의 ParallelAnimation

ParallelAnimation은 QML 애니메이션 요소 중 하나로, 여러 애니메이션을 동시에 실행할 수 있게 해줍니다. 이를 통해 다양한 UI 요소에서 다중 애니메이션 효과를 동시에 적용할 수 있어 보다 풍부하고 동적인 시각적 표현을 쉽게 구현할 수 있습니다. ParallelAnimation은 여러 개의 개별 애니메이션 객체(예: NumberAnimation, PropertyAnimation, ColorAnimation 등)를 그룹화하여 동시에 실행하며, 각 애니메이션의 시작과 종료를 동기화하는 기능을 제공합니다.

 

 

 

 기본 문법 및 구조

ParallelAnimation은 여러 애니메이션을 자식 요소로 포함하여 정의하며, 이들은 모두 동시에 시작됩니다.

ParallelAnimation {
    NumberAnimation {
        target: someObject
        property: "x"
        to: 300
        duration: 1000
    }
    ColorAnimation {
        target: someObject
        property: "color"
        to: "red"
        duration: 1000
    }
}
  • ParallelAnimation: 애니메이션 그룹을 정의하여 동시에 실행할 수 있도록 합니다.
  • 개별 애니메이션 객체 (NumberAnimation, ColorAnimation 등)는 병렬로 실행되며, 동일한 타이밍에 애니메이션이 시작되고 종료됩니다.

 

주요 속성 및 사용법

  • running: ParallelAnimation이 실행 중인지 여부를 나타내는 Boolean 속성입니다. true일 경우 애니메이션이 실행됩니다.
  • loops: 애니메이션을 몇 번 반복할지 설정하는 속성입니다. Animation.Infinite로 설정하면 무한 반복이 가능합니다.
  • onFinished: 애니메이션이 완료되었을 때 실행될 JavaScript 코드를 정의합니다.

 

 

 

 예제: 여러 애니메이션을 동시에 실행하기

아래 예제는 Rectangle 요소에서 위치와 색상을 동시에 변경하는 병렬 애니메이션을 정의한 것입니다.

import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 640
    height: 480

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

        MouseArea {
            anchors.fill: parent
            onClicked: {
                parallelAnimation.running = true
            }
        }

        ParallelAnimation {
            id: parallelAnimation
            running: false

            NumberAnimation {
                target: animatedRectangle
                property: "x"
                to: 300
                duration: 1000
            }
            NumberAnimation {
                target: animatedRectangle
                property: "y"
                to: 200
                duration: 1000
            }
            ColorAnimation {
                target: animatedRectangle
                property: "color"
                to: "red"
                duration: 1000
            }
        }
    }
}

설명

  • Rectangle 요소는 파란색 사각형이며, 사용자가 클릭하면 병렬 애니메이션이 실행됩니다.
  • ParallelAnimation은 세 가지 애니메이션을 동시에 실행합니다:
    • NumberAnimation으로 사각형의 x 좌표y 좌표를 각각 이동.
    • ColorAnimation으로 사각형의 색상을 파란색에서 빨간색으로 변경.
  • 클릭 이벤트를 통해 parallelAnimation.running = true로 설정하여 애니메이션을 시작합니다.

 

 

 

 SequentialAnimation과의 차이점

ParallelAnimation과 비슷한 개념으로 **SequentialAnimation**이 있습니다. SequentialAnimation은 여러 애니메이션을 연속적으로 실행할 때 사용됩니다.

  • ParallelAnimation: 모든 애니메이션이 동시에 실행됩니다.
  • SequentialAnimation: 각 애니메이션이 순차적으로 실행됩니다. 이전 애니메이션이 완료된 후 다음 애니메이션이 시작됩니다.

 

 

 

 활용 예시

  1. 버튼 강조 효과: 버튼의 색상과 크기를 동시에 변경하여 사용자에게 클릭 유도 효과를 줄 수 있습니다.
  2. 로딩 애니메이션: 화면의 여러 요소에서 동시다발적인 애니메이션을 통해 로딩 진행 중임을 시각적으로 보여줄 수 있습니다.
  3. 장면 전환 효과: 화면 전환 시 여러 UI 요소의 위치나 크기, 색상을 동시에 변경하여 부드러운 화면 전환을 만들 수 있습니다.

 

 

 

 주의사항

  • 동기화된 종료: ParallelAnimation에 포함된 모든 애니메이션은 동시에 시작되며, 각 애니메이션의 **duration**이 다르더라도 모두 완료될 때까지 독립적으로 동작합니다. 따라서, 각 애니메이션의 지속 시간이 다를 경우 특정 애니메이션이 먼저 종료될 수 있습니다.
  • 복잡한 애니메이션: 여러 개의 애니메이션을 병렬로 실행하면 복잡한 동작이 발생할 수 있습니다. 특히 여러 속성이 동시에 변경될 때 시각적 일관성을 유지하는 것이 중요합니다.

 

 

 

 결론

  • ParallelAnimation은 QML에서 동시에 여러 애니메이션을 실행하고 싶을 때 사용하는 강력한 도구입니다.
  • 여러 개의 애니메이션을 동시에 실행하여 더 풍부하고 자연스러운 UI 효과를 만들 수 있습니다.
  • 사용자 경험을 극대화하는 애니메이션 효과를 만들기 위해서는 각 애니메이션의 속성 (예: 지속 시간)과 상호작용을 잘 고려해야 합니다.

ParallelAnimation을 사용하면 다양한 UI 요소에서 복합적인 애니메이션 효과를 부드럽고 직관적으로 구현할 수 있습니다. 이를 통해 애플리케이션의 역동적인 UI를 쉽게 구축할 수 있습니다.

 


 

 

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

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

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

QML easing.type 속성  (0) 2024.11.13
QML의 NumberAnimation  (0) 2024.11.12
QML의 positionViewAtIndex 함수  (0) 2024.11.10
[QT,QML] Qt의 QAbstractListModel  (0) 2024.11.09
[QT,QML] C++과 QML 간의 시그널-슬롯 통신  (0) 2024.11.08