Проблема заключается в том, что значения to
свойств двух экземпляров NumberAnimation
связаны только один раз во время инициализации компонента QML.Они не пересчитываются при вызове animateHead.start()
, и анимации выполняются только в том случае, если значение свойства to
отличается от фактического значения анимированного свойства.Вот почему он работает только в первый раз.
Рабочим решением будет:
import QtQuick 1.0
Image {
id: head;
source: "vlad.png";
height: 80;
width: 90;
MouseArea {
anchors.fill: parent
onClicked: {
xAnimation.to = Math.floor(Math.random()*210)
yAnimation.to = Math.floor(Math.random()*210)
animateHead.start();
}
ParallelAnimation {
id: animateHead;
NumberAnimation {
id: xAnimation
target: head;
properties: "x";
duration: 1000;
easing {
type: Easing.OutBack;
overshoot: 5
}
}
NumberAnimation {
id: yAnimation
target: head;
properties: "y";
duration: 1000;
easing {
type: Easing.OutBack;
overshoot: 5
}
}
}
}
}
Здесь значения свойств to
явно задаются в обработчике onClicked
MouseArea
.