我正在开发一个简短的“引擎”类,以在一定程度上简化与 Three.js 的交互。我将示例的 Render() 方法重构为这个 Engine JS 类,如下所示:
var Engine = function () {
var pub = {},
scene,
camera;
// SNIP: Extra private and public variables and functions...
pub.Render = function (fixedUpdate) {
requestAnimationFrame(pub.Render);
fixedUpdate();
renderer.render(scene, camera);
};
return pub;
}();
我尝试通过传递一些带有我想要对其执行的操作的函数来使用它。例如:
Engine.Render(function () {
cube.rotation.x += 0.01;
cube.rotation.y += 0.02;
});
但是,当我尝试在 Chrome 中运行它时,出现错误:Uncaught TypeError: number is not a function,并且在检查 Engine.Render 的 fixedUpdate 变量时,它通常是一个非常大的数字,并且显然没有注册为匿名函数传入的调用代码。
作为健全性测试,我尝试将句柄传递给非匿名函数,如下所示:
function animation() {
cube.rotation.x += 0.01;
cube.rotation.y += 0.02;
}
Engine.Render(animation);
...并得到完全相同的结果。我怀疑问题在于我如何调用参数。