我正在使用 babylonjs 库并使用打字稿创建了一个“建筑”类。顺便说一句,对整个事情使用打字稿。我从我的主 game.ts“游戏”类创建了这个新的“建筑”,当尝试访问“建筑”的成员时,我得到“未定义”的变量错误。然而,这只发生在另一个类方法中,但似乎在构造函数中正常工作。我假设它与 javascript/typescript 中的“this”范围有关。我尝试通过执行以下操作来修改函数:
Create = ...(...)=> {
...
我尝试通过以下方式创建变量:
private rect: = () => Rectangle
但这仍然不起作用
这真的是“this”范围界定的问题吗,因为似乎没有任何效果。下面我准确地标记了这个变量在哪里起作用,在哪里不起作用。
class Building {
private rect : Rectangle
private buildingMesh:string[]
private buildingId:string
constructor(rect: Rectangle, id:string) {
this.rect = rect
console.log("TL in b const: " + this.rect.topLeft.x) // <--- This works here
this.buildingId = id
}
Create(scene:BABYLON.Scene) {
BABYLON.SceneLoader.ImportMesh(this.buildingId, "models/","tree.babylon", scene, function (newMeshes) {
var idx = 0
console.log("TL in b: " + this.rect.topLeft.x) // <--- this gives me undefined
var wall =newMeshes[0].createInstance(this.buildingId + idx)
wall.position.x = this.rect.topLeft.x
wall.position.y = this.rect.topLeft.y
this.buildingMesh.push(this.buildingId + idx)
idx++
});
}
}