Datilografado: membro privado é subitamente indefinido
Então, eu tenho um aplicativo básico de Datilogravura, que não deveria realmente causar problemas maiores, mas parece que algo está errado aqui e eu não tenho ideia do que.
Eu tenho esse membro privadominUpdateRate
no meuGameContainer
classe, que é inicializado no construtor. Isso parece ir bem, porque quandoGameContainer.start()
é chamado, oconsole.log()
método será impresso1
.
No entanto, quando oGameContainer.render()
método é chamado, parece estar fora do escopo ou algo assim, as saídas do método de logundefined
lá.
Sou bem novo no TypeScript e não tanto no JavaScript (especialmente quando se trata de escopos, está ficando confuso para mim: /). Como posso, no entanto, resolver isso?
Classe principal:
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;
}
}
Classe do Contêiner do Jogo:
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) {
...
}
}
}
Render é chamado via setInterval na área de script:
var game = TwoDGame.main(context);
setInterval(game.getGameContainer().render, 16);