我有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