だから、実際には大きな問題を引き起こさないはずの基本的なTypescriptアプリケーションを手に入れましたが、ここで何かがうまくいかないようで、何がわかりません。
クラスにこのプライベートメンバーminUpdateRate
があり、コンストラクターで初期化されます。が呼び出されると、メソッドが出力されるGameContainer
ため、これはうまくいくようです。GameContainer.start()
console.log()
1
ただ、GameContainer.render()
メソッドを呼び出すと範囲外のようで、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) {
...
}
}
}
Render は、スクリプト領域の setInterval を介して呼び出されます。
var game = TwoDGame.main(context);
setInterval(game.getGameContainer().render, 16);