2016-09-21 163 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

相关问题