我無法從QML讀取JavaScript變量。我知道這似乎很容易,但這是一個特殊的情況:從另一個Javascript腳本(Canvas3D)更新QML屬性
我使用canvas3D生成大量的3D球體,而且由於instenciation非常長,我想顯示一個進度條。
爲了做到這一點,我已經做到了這一點:
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);
}
我在canvas3d屬性名稱的進步,我試着從test6.js腳本修改
在initializeGL每次我更新的進度值(canvas3d)功能,我添加了一個球:現在
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;
}
,問題是,我得到的進度更新值只有當initializeGL()結束。現在它是這樣的:
Progress Bar to 0%
(Waiting for all the sphere to be instanciated)
(initializeGL() ends)
Progress Bar to 100%
這是沒用的。每次創建球體時,我都希望酒吧移動。
你知道我該怎麼做?
非常感謝:) – ElevenJune