Bonjour,
dans le cadre d'une application de test, j'aimerais avoir un script lua qui « gère » une application Qt. Le problème se pose lorsque je veux que le script lua attende la fin d'une fonction.
Pour le moment mon script ressemble à :
1 2 3 4 5 6 | function main() local bgID = load_image("image.png") show(bgID) fade_out(bgID, 600) fade_in(bgID, 600) end |
L'application est une simple QMainWindow et les images affichées le sont via des QLabel.
Dans ce script d'exemple, j'aimerais que fade_out se termine entièrement avant que fade_in ne soit exécutée.Les fonctions fade_xx appellent cette méthode :
1 2 3 4 5 6 7 8 9 | void GameWidget::setPropertyAnimation(QObject * target, QByteArray property, double start, double end, int duration) { QPropertyAnimation * anim = new QPropertyAnimation(target, property, this); anim->setStartValue(start); anim->setEndValue(end); anim->setDuration(duration); anim->start(QAbstractAnimation::DeleteWhenStopped); connect(anim, SIGNAL(finished()), this, SLOT(animationFinished())); } |
Donc après l'appel à fade_out, il faudrait que le script lua soit mis en pause et dans le slot animationFinished j'appelle une fonction de l'API lua pour reprendre son exécution. (et si possible, sans avoir à gonfler mon script avec des coroutine.yield()
de partout.)
Merci d'avance.
ps: sinon, s'il y a un langage qui permet ça (autre que de coder son propre interprète bytecode).