我有一个8个立方体的数组,全部高1px。当按下按钮时,它们意味着使用while循环补间到新的目标高度,如下所示:
if (buttonHit) {
console.log('button hit')
for (i in meshArray) {
while (Math.abs(meshArray[i].scale.y - newList[i].cost)>5) {
console.log(meshArray[3].scale.y)
meshArray[i].scale.y += .3
}
}
buttonHit = false;
}
控制台日志显示的是,meshArray [3]连续保持1px 1215次,然后添加.3,然后停止,但是一旦完成,网格就会弹出它的目标高度
while循环在render()中不起作用吗?
答案 0 :(得分:1)
问题是每个需要渲染的帧都会调用一次渲染。您正在一帧中完成所有更改。 threejs从来没有机会重绘任何东西。
您需要做的是每次调用渲染时仅将.3的高度更改一次。就是没有它循环。
有点像这样的东西:function render() {
if (buttonHit) {
new_height = 2;
buttonHit = false;
}
if (meshArray[i].scale.y < new_height) {
meshArray[i].scale.y +=.3
}
}