我需要帮助〜!!
我用两个组件实现了一个动画。 一个开始动画,在另一个开始之前。 代码如下所示
A.qml
PropertyAnimation {
id: ani1
target: comp1
property: "height"
to: 1000
duration: 300
}
// if comp1.height == 300 then ani2.start()
B.qml
PropertyAction {
target: comp2
property: "height"
value: 300
}
PropertyAnimation {
id: ani2
target: comp2
property: "height"
to: 1000
duration: ?
}
// ani1 and ani2 finish times are the same.
所以,我想知道如何实现价值“?” ??
真实代码......不允许耦合(如果可能......)
答案 0 :(得分:0)
如果要在另一个之后运行一个动画,可以使用SequentialAnimation作为评论部分中建议的folibis。但是,如果你想设置" ani2"的持续时间。根据" ani1"的剩余时间,你可以用一些数据来计算它。
似乎你想知道当comp1的高度变为300时所经过的时间。 假设comp1的起始高度为100.每个QML PropertyAnimation都有其缓动类型。 (参考:http://qt-project.org/doc/qt-4.8/qml-propertyanimation.html#easing.type-prop)
由于其默认缓动曲线是线性的,因此您可以通过简单的数学运算得到comp1高度变为300时所经过的时间。一个毫秒级的高度变化是(1000-100)/ 300,即3。初始高度和300之间的变化是200.因此,当comp1&#39时,大约200/3(大约66.7)毫秒秒; s高度变为300,假设其初始高度为100.
因此,ani2的持续时间约为233.3毫秒(300 - 66.7)。 希望这会有所帮助。