我觉得在这里我对理解缺失了相当重要的东西,因此也许一点解释会非常有帮助。
我有一个类,如下所示:
class Entity {
protected pos: number = [0,0];
...
public setPos(x: number, y: number) {
this.pos = [x, y];
}
}
我希望您能够提供类似以下的东西
class EntityPositionListener {
//do stuff when an Entity position changes
}
我还有Entity
类的子类。 因此,每当Entity
或其任何子类更改给定实例中的pos
变量时,我希望能够了解并更新地图上的位置,以及捕获该实例,以便我可以在该实例上进行其他操作。
我注意到Firefox有Object.watch()
命令,并且我在另一个问题中找到了一个“跨浏览器”的解决方案-但是没有用-我已经尝试在后期初始化阶段“包装”Entity
类,但后者最终会覆盖Entity
类或创建一个无限循环,所以显然我错过了某个点。如果包装是答案,那么我该如何在TypeScript中执行此操作?JS版本创建了一个循环或未起作用。
//This created an infinite loop in runtime, but more importantly overwrote the Entity class
function EntityListener(name) {
cout(name);
}
var oldEntity = Entity;
function Entity(name) {
if (typeof EntityListener === "function") {
EntityListener(name);
}
oldEntity(name);
}
理想情况下,我想在一个给定的类中监听多个事物,比如在游戏更新循环中。这个特殊情况只是用于演示。我找到了无数链接,其中许多是 JavaScript 而不是明确的 TypeScript ,因此我真的希望有一个 TypeScript 解决方案和一些解释。我基本上不明白如何去做。
编辑
如果这是更好的问题版本,更简单地说,如何监听 Entity.setPos() 函数被调用?