Estoy construyendo una aplicación C++ basada en QML.Cómo retrasar la acción de JavaScript dentro de QML?
para que sea simple:
En mi archivo principal QML, tengo un botón (Rectángulo) llamando a una función de JavaScript (definido en un archivo externo de JS) cuando se hace clic:
// My JS file linked to the main QML window
[...]
function actionOnButtonClicked()
{
var x = 0;
var y = 0;
for(var i = 0; i < 3; i++)
{
createObject(x, y);
x = x + 10;
y = y + 10;
}
}
Como puede ver, en esta función, llamo n (= 3 aquí) tiempos otra función JS para crear dinámicamente varios QML objetos para agregar a la escena:
function createObject(xPosition, yPosition)
{
component = Qt.createComponent("Symbol.qml");
component.createObject(windowApp, {"x": xPosition, "y": yPosition});
}
Esto funciona bien. Pero el objeto creado (símbolo) aparece en la windowApp con una animación traducción (alrededor de 1 seg.), Y me gustaría que esperar a que la animación del primer objeto que completar antes de la creación de la segunda ...
Como no puedo usar setTimeOut() función de JavaScript en QML, me pregunto cómo podría lograr esto. No veo cómo podría utilizar el objeto Timer QML o incluso PauseAnimation ...
¿Alguien sabe cómo agregar un retraso entre 2 operaciones de JavaScript QML?
Hola, gracias por ayudarme. de hecho, podría esperar a que termine la animación insertando [scriptAction] (http://doc-snapshot.qt-project.org/4.8/qml-scriptaction.html) al final. Sin embargo, la función a la que deseo llamar después de que se haya creado un Símbolo puede diferir a lo largo de la ejecución del programa, y eso rompería mis pasos iniciales (realizados en la función _actionOnButtonClicked() _). Nota en mi ejemplo de código, utilicé deliberadamente un _for_ para crear varios objetos en esa función para fines de simplificación, pero esta función en realidad realiza varias operaciones entre la creación de objetos diferentes ... – Benoit