我正在使用一个使用Three.js的应用。我已经加入了[神奇的] OribitalControls.js来帮助进行场景导航。它具有以下代码将其功能附加到鼠标滚轮:
this.domElement.addEventListener( 'mousewheel', onMouseWheel, false );
this.domElement.addEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox
在我的应用程序的另一个地方(在一个单独的文件中),我有自己的鼠标轮监听器。我将它附加到这样的事件:
this.canvas.onmousewheel = this.onMouseWheel.bind(this);
问题是我的mousewheel函数告诉渲染器渲染帧,因为场景中的某些东西已经改变了。然后,OrbitalControls鼠标滚轮功能会在重新渲染帧后更改摄像机的位置。下次我改变一些东西时,我会发现一个令人烦恼的变焦'因为我的听众没有收到OrbitalControls听众的最后一点变化。
有没有办法可以强制我的onMouseWheel()函数始终使用?
编辑:由于应用程序的架构,OrbitalControls对我的其他鼠标滚轮功能一无所知。此外,我的鼠标轮功能无法对OrbitalControls的实现做出任何假设。
答案 0 :(得分:0)
js和jquery都是同步的。你的目标可以通过回调功能来实现。在第一个函数完全执行后调用回调。谷歌回调功能,你会发现很多例子