【发布时间】:2013-06-13 10:57:24
【问题描述】:
所以,我有一个基本的 Typescript 应用程序,它实际上应该不会导致任何重大问题,但似乎这里出了点问题,我不知道是什么。
我的GameContainer 类中有这个私有成员minUpdateRate,它是在构造函数中初始化的。这似乎很顺利,因为当调用GameContainer.start() 时,console.log() 方法将打印出1。
但是,当GameContainer.render()方法被调用时,好像超出范围什么的,log方法在那里输出undefined。
我对 TypeScript 还很陌生,对 JavaScript 也没有那么深入(尤其是在涉及范围时,它让我感到困惑:/)。但是,我该如何解决呢?
主类:
class TwoDGame extends Game {
public static main(context:CanvasRenderingContext2D) {
var game:Game = new TwoDGame();
var container:GameContainer = new GameContainer(context, game);
container.start();
return game;
}
}
游戏容器类:
class GameContainer {
...
private minUpdateRate:number;
private game:Game;
private time:number;
...
constructor(context:CanvasRenderingContext2D, game:Game) {
...
this.minUpdateRate = 1;
this.game = game;
}
public start() {
...
console.log(this.minUpdateRate);
}
public render() {
var now:number = new Date().getMilliseconds();
var delta:number = now - this.time;
console.log(this.minUpdateRate);
if (delta > this.minUpdateRate) {
...
}
}
}
通过脚本区域中的 setInterval 调用渲染:
var game = TwoDGame.main(context);
setInterval(game.getGameContainer().render, 16);
【问题讨论】:
-
我在任何地方都看不到这个方法定义:
game.getGameContainer() -
getGameContainer在Game超类中定义 -
看看这个问题:typescript.codeplex.com/discussions/445528。并恭喜您在 Stack Overflow 上提出第 1000 个打字稿问题 :)
-
在 TypeScript 中更好地理解
this:youtube.com/watch?v=tvocUcbCupA&hd=1
标签: javascript this typescript setinterval private-members