我正在嘗試製作可見的動畫。我有一個JavaScript函數,它調用myModel.move()兩次。我有一個GridView來顯示我的模型,我有「X上的行爲」動畫,因此我可以直觀地看到動作。但是,這兩種運動動畫片都是並列運行的(它們之間的小延遲並不明顯)。QML:等到動畫完成
我的想法是添加一個有多少動畫開始的計數器,以及其中有多少個已經完成。像這樣的東西;
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(...)
}
}
這是問題所在。我可以看到,第一次移動()所有必要的動畫開始後,但沒有什麼可以看到,沒有動畫完成。我有一種僵局。如何解決這個問題?
是的,我知道...簡化問題產生簡化的答案:-(其實,我想有許多不同的連續myModel.move(...)調用。但是,你的建議是可用的(見解決方案我在下面發佈) – meolic
如果你想保持性能,一個繁忙的循環並不是一個好主意 – trusktr
@trusktr和你在哪看到我說這是一個好主意? – UmNyobe