Come suggerito nei commenti alla tua domanda, il componente Timer è una buona soluzione a questo.
function Timer() {
return Qt.createQmlObject("import QtQuick 2.0; Timer {}", root);
}
timer = new Timer();
timer.interval = 1000;
timer.repeat = true;
timer.triggered.connect(function() {
print("I'm triggered once every second");
})
timer.start();
Quanto sopra sarebbe come sto attualmente utilizzandolo, ed ecco come avrei potuto implementare l'esempio nella tua domanda.
function delay(delayTime) {
timer = new Timer();
timer.interval = delayTime;
timer.repeat = false;
timer.start();
}
(che non fa nulla, continua a leggere)
Anche se il modo in cui esatta che stai cercando per la sua attuazione suggerisce che si sta cercando per la sua blocco fino alla prossima linea di il tuo programma viene eseguito Ma questo non è un ottimo modo per farlo, poiché bloccherebbe anche lo nel tuo programma come JavaScript viene eseguito solo in un singolo thread di esecuzione.
Un'alternativa è passare una richiamata.
function delay(delayTime, cb) {
timer = new Timer();
timer.interval = delayTime;
timer.repeat = false;
timer.triggered.connect(cb);
timer.start();
}
Quale consentirebbe di utilizzarlo come tale.
delay(1000, function() {
print("I am called one second after I was started.");
});
Spero che sia d'aiuto!
Modifica: Quanto sopra presuppone che si stia lavorando in un file JavaScript separato che verrà successivamente importato nel file QML. Per fare direttamente l'equivalente in un file QML, puoi farlo.
import QtQuick 2.0
Rectangle {
width: 800
height: 600
color: "brown"
Timer {
id: timer
}
function delay(delayTime, cb) {
timer.interval = delayTime;
timer.repeat = false;
timer.triggered.connect(cb);
timer.start();
}
Rectangle {
id: rectangle
color: "yellow"
anchors.fill: parent
anchors.margins: 100
opacity: 0
Behavior on opacity {
NumberAnimation {
duration: 500
}
}
}
Component.onCompleted: {
print("I'm printed right away..")
delay(1000, function() {
print("And I'm printed after 1 second!")
rectangle.opacity = 1
})
}
}
Non sono convinto che questa sia la soluzione al problema attuale; per ritardare un'animazione, è possibile utilizzare PauseAnimation.
Basta usare un elemento Timer: http://doc.qt.io/qt-5/qtimer.html – MrEricSir
Le scelte sono qui, nei commenti. Oltre a questi, il framework di animazione è piuttosto ricco e offre una varietà di modi per controllare le animazioni. Inserisci i documenti o pubblica una domanda per soddisfare le tue esigenze di animazione. – BaCaRoZzo
Perché i voti negativi? Penso che sia una domanda completamente legittima. –