从/到动画中使用的值动态更改
Posted
技术标签:
【中文标题】从/到动画中使用的值动态更改【英文标题】:Dynamically change from/to values used in animations 【发布时间】:2016-11-07 14:42:30 【问题描述】:假设我有以下代码:
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
然后,我将这个对象的minVal
、maxVal
和duration
属性连接到滑块,这样我就可以玩这个效果了。
有没有办法强制动画使用新的 min/maxVal 值?
目前,动画初始化时出现的minVal
/maxVal
值似乎被“烘焙”到动画中,无法强制这些值稍后重新计算/重新烘焙
以前,每次需要其中一项更改时,我都能够摆脱整个 QML 画布。但是在这种情况下,它并不是很实用,所以我想知道是否有其他替代方案?
【问题讨论】:
【参考方案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
我尽可能避免可能会以某种方式嵌入的绑定。 我错过了你的问题吗?
【讨论】:
@BaCaRoZzo:谢谢! 不客气。 :) 通常人们会因为被编辑而生气,我很高兴事实并非如此。 事实证明,在我之前遇到的问题系统中发生了几件事:1)受这个答案的启发,我在每个属性中添加了“on[Var]Changed”处理程序动画取决于,它会做 anim.restart(); 2)有一些错别字在找不到相关对象时默默地出错; 3)我不得不按照设置刷新的顺序来玩(例如,持续时间属性必须排在最后!) 哦,出于某种奇怪的原因,“maxVal”刷新必须在“minVal”之前发生,否则不会应用“maxVal” - 因为 maxVal 是唯一真正改变/重要的事情,让它发挥作用很重要。以上是关于从/到动画中使用的值动态更改的主要内容,如果未能解决你的问题,请参考以下文章
如何为 QPushButton 的背景颜色设置动画(动态更改按钮颜色)