İbrahim
İbrahim

Reputation: 1021

QML - Why do animations conflict?

Example of Qml - Flipable:

import QtQuick 2.0

Flipable {
    id: flipable
    width: 240
    height: 240

    property bool flipped: false

    front: Rectangle { width: 200; height: 200; color: 'red'; anchors.centerIn: parent }
    back: Rectangle { width: 200; height: 200; color: 'blue'; anchors.centerIn: parent }

    transform: Rotation {
        id: rotation
        origin.x: flipable.width/2
        origin.y: flipable.height/2
        axis.x: 0; axis.y: 1; axis.z: 0     // set axis.y to 1 to rotate around y-axis
        angle: 0    // the default angle
    }

    states: State {
        name: "back"
        PropertyChanges { target: rotation; angle: 180 }
        when: flipable.flipped
    }

    transitions: Transition {
        NumberAnimation { target: rotation; property: "angle"; duration: 4000 }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: flipable.flipped = !flipable.flipped
    }
}

This example is running good but, if I use this code, Flipable doesn't run:

MouseArea {
  anchors.fill: parent
  onClicked: {
    flipable.flipped = true;
    flipable.flipped = false;
  }
}

I think the animation conflicts when I first make the flipped property is true then false. Whereas I want flipable open and then close.

Upvotes: 0

Views: 249

Answers (1)

augre
augre

Reputation: 2051

The problem is that you set the property flipped back to false before the flip animation even started.

If you want the full open/close animation, you have to wait for the "open" animation to finish before starting the "close" animation:

transitions: Transition {
    id: transition
    onRunningChanged: {
        if (!running && flipable.flipped) {
            flipable.flipped = false;
        }
    }
    NumberAnimation { target: rotation; property: "angle"; duration: 4000 }
}

MouseArea {
    anchors.fill: parent
    onClicked: {
        if (!transition.running) {
            flipable.flipped = true;
        }
    }
}

Upvotes: 0

Related Questions