动态更改动画中使用的值

时间:2016-11-07 14:42:31

标签: qt animation qml qtquick2

说我有以下代码:

Rectangle {
  id: rect

  property int minVal : 0
  property int maxVal : 10
  property int duration: 1000

  SequentialAnimation {
    loops: Animation.infinite
    NumberAnimation {
       target: rect; property: "x"
       from: minVal;  to: maxVal
       duration: duration
    }
    NumberAnimation {
       target: rect; property: "x"
       from: maxVal;  to: minVal
       duration: duration
    }
  }
}

然后,我将这个对象的minValmaxValduration属性连接到滑块,以便我可以使用此效果。

有没有办法强制动画使用min / maxVal的新值?

目前,似乎动画初始化时出现的minVal / maxVal值会被"烘焙"进入动画,没有办法强迫这些重新计算/重新计算

以前,只要需要进行其中一项更改,我就可以放弃丢弃整个QML画布。但在这种情况下,它并不实用,所以我想知道是否还有其他选择?

1 个答案:

答案 0 :(得分:1)

我无法找到一种方法来“烘烤”这些价值观。对我来说,至少,这可以按照我的预期运作:

Button {
    id: but
    property int count: 0
    property int minX: 0
    property int maxX:  1000

    text: 'start' + x

    onCountChanged: {
        minX += 10
        maxX -= 10
    }

    onClicked: ani.start()
}

SequentialAnimation {
    id: ani
    NumberAnimation {
        target: but
        property: 'x'
        from: but.minX
        to: but.maxX
    }
    ScriptAction {
        script: { but.count += 1 }
    }
}

我尽可能地避免以某种方式烘焙的绑定。
我错过了你的问题吗?