我对TypeScript和函数作为参数有疑问。我有BabylonJS的问题,但我认为,这与所有TypeScript有关。我将render函数存储在我的课程中:
this._renderloop = newScene.render; // render(): void; is a function of BabylonJS.Scene class
并通过
调用BabylonJS renderLoopthis._webglEngine.runRenderLoop(this._renderloop);
这给我有关未初始化Scene的某些属性(例如_activeParticles)的错误。
但是当我通过以下方式设置renderloop时:
this._renderloop = () => newScene.render();
this._webglEngine.runRenderLoop(this.renderloop);
一切正常。
第一次通话有什么问题?第二个不是更好,因为我跳过了一个函数调用?
(BabylonJS文档可在此处找到:https://doc.babylonjs.com/)
答案 0 :(得分:0)
this._webglEngine.runRenderLoop(newScene.render)
scene.render中的this
将不确定。修复它的最简单方法是将其包装在类似于第二个示例的函数中。
这是因为javascript处理this
的方式。有一个使用this
in the Typescript wiki的不错的指南。