我可以在持续时间内保持时间

时间:2014-08-19 11:03:44

标签: qml

我需要帮助〜!!

我用两个组件实现了一个动画。 一个开始动画,在另一个开始之前。 代码如下所示

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.

所以,我想知道如何实现价值“?” ??

真实代码......不允许耦合(如果可能......)

1 个答案:

答案 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)。 希望这会有所帮助。