Ich habe Probleme beim Lesen einer JavaScript-Variable aus QML. Ich weiß, das scheint einfach, aber das ist ein besonderer Fall:Aktualisieren einer QML-Eigenschaft von einem anderen JavaScript-Skript (Canvas3D)
Ich benutze canvas3D zum Generieren von vielen 3D-Kugeln und, da die Intentionierung wirklich lang ist, möchte ich einen Fortschrittsbalken anzeigen.
, das zu tun, ich habe dies getan:
import "test6.js" as GLCode
Item {
id: mainview
width: 1280
height: 768
visible: true
// THE PROGRESS BAR
ProgressBar {
id : progressBar
anchors.centerIn: parent
value: canvas3d.progress
z:1
}
//THE CANVAS3D (WebGL)
Canvas3D {
id: canvas3d
anchors.fill: parent
focus: true
property double progress:0 //MY VARIABLE I WANT TO UPDATE FROM test6.js
property var list : []
// Emitted when one time initializations should happen
onInitializeGL: {
GLCode.initializeGL(canvas3d);
}
ich einen Eigenschaftsnamen Fortschritt in meinem Canvas3D, die ich aus dem test6.js Skript
Im initializeGL zu ändern bin versucht, (Canvas3D) Funktion, die ich den Wert des Fortschritts bin Aktualisieren jedes Mal, wenn ich eine Kugel hinzu:
for (i = 0; i < spheresNum; i ++) {
var x = list[i][0];
var y = list[i][1];
var z = list[i][2];
drawSphere(x,y,z,i);
canvas3d.progress = i/spheresNum*100;
}
Nun, das Problem ist, dass ich den aktualisierten Wert des Fortschritts erhalten nur, wenn initializeGL() beendet. Im Moment ist es wie folgt:
Progress Bar to 0%
(Waiting for all the sphere to be instanciated)
(initializeGL() ends)
Progress Bar to 100%
Was ist nutzlos. Ich würde es vorziehen, wenn sich die Leiste jedes Mal bewegt, wenn eine Kugel erstellt wird.
Wissen Sie, wie kann ich das tun?
Vielen Dank :) – ElevenJune