我有8個立方體,全部1px高。當按鈕被擊中,他們是爲了補間到一個新的目標高度,使用while循環,如下所示:爲什麼while循環在threejs渲染函數中不更新每一幀?
什麼控制檯日誌顯示我是meshArray [3] 1px的1215次持有一行,然後添加.3,然後停止,但一旦完成,網格就會彈出到目標高度。
做一個while循環不能在render()中工作嗎?
我有8個立方體,全部1px高。當按鈕被擊中,他們是爲了補間到一個新的目標高度,使用while循環,如下所示:爲什麼while循環在threejs渲染函數中不更新每一幀?
什麼控制檯日誌顯示我是meshArray [3] 1px的1215次持有一行,然後添加.3,然後停止,但一旦完成,網格就會彈出到目標高度。
做一個while循環不能在render()中工作嗎?
問題是渲染被調用一次需要渲染的每個幀。你正在一個框架內完成所有的改變。 threejs從來沒有機會重繪任何東西。
你需要做的只是改變高度.3每次調用渲染一次。即沒有在一個循環中。
東西有點像這樣:
function render() {
if (buttonHit) {
new_height = 2;
buttonHit = false;
}
if (meshArray[i].scale.y < new_height) {
meshArray[i].scale.y +=.3
}
}
完全工作!謝謝!這是,使用我的數組: '如果(buttonHit){ 爲(i的meshArray){ currentHeight [I] = newList [I]。成本 } buttonHit = FALSE; } 爲(i的meshArray){ 如果(meshArray [I] .scale.y
顯示在16.7毫秒一次粉刷一新。你可能需要做一些像'setTimeout(redrawCube,17 * i)',最好在'requestAnimationFrame()'調用中。 – Redu