我正在尝试使可见的动画连续。我有一个 javascript 函数,它调用 myModel.move() 两次。我有一个 GridView 来显示 myModel,并且我有“x 上的行为”动画,因此我可以直观地看到这些动作。但是,两个运动动画都并行运行(它们之间的小延迟并不明显)。
我的想法是添加一个计数器,记录有多少动画已经开始,有多少已经完成。像这样的东西;
Behavior on x {
NumberAnimation {
id: animationX;
duration: 500;
onRunningChanged: {
if (animationX.running) {
console.log("Animation start");
myModel.busy = myModel.busy + 1
} else {
console.log("Animation stop");
myModel.busy = myModel.busy - 1
}
}
}
}
这按预期工作。然后,我在我的 javascript 函数中添加一个循环,以等待所有动画完成。
ListModel {
id: myModel
property int busy: 0
function doSomething() {
myModel.move(...)
while (myModel.busy) {}
myModel.move(...)
}
}
这是问题所在。我可以看到在第一次 move() 之后所有必要的动画都开始了,但是什么也看不到,也没有动画完成。我有某种僵局。如何解决这个问题?