2016-09-21 52 views
0

我有8個立方體,全部1px高。當按鈕被擊中,他們是爲了補間到一個新的目標高度,使用while循環,如下所示:爲什麼while循環在threejs渲染函數中不更新每一幀?

​​

什麼控制檯日誌顯示我是meshArray [3] 1px的1215次持有一行,然後添加.3,然後停止,但一旦完成,網格就會彈出到目標高度。

做一個while循環不能在render()中工作嗎?

+0

顯示在16.7毫秒一次粉刷一新。你可能需要做一些像'setTimeout(redrawCube,17 * i)',最好在'requestAnimationFrame()'調用中。 – Redu

回答

1

問題是渲染被調用一次需要渲染的每個幀。你正在一個框架內完成所有的改變。 threejs從來沒有機會重繪任何東西。

你需要做的只是改變高度.3每次調用渲染一次。即沒有在一個循環中。

東西有點像這樣:

function render() { 

    if (buttonHit) { 
     new_height = 2; 
     buttonHit = false; 
    } 

    if (meshArray[i].scale.y < new_height) { 
     meshArray[i].scale.y +=.3 
    } 

} 
+0

完全工作!謝謝!這是,使用我的數組: '如果(buttonHit){ 爲(i的meshArray){ currentHeight [I] = newList [I]。成本 } buttonHit = FALSE; } 爲(i的meshArray){ 如果(meshArray [I] .scale.y EJW

相關問題