기본 Typescript 응용 프로그램이 있는데, 실제로 큰 문제는 발생하지 않아야합니다.하지만 여기에 뭔가 잘못되어있는 것 같아요.Typescript : private 멤버가 갑자기 정의되지 않았습니다.
이 개인 멤버 minUpdateRate
은 내 GameContainer
클래스에 있으며 생성자에서 초기화됩니다. 이것은 이 호출 될 때 console.log()
메서드가 1
을 출력하기 때문에 잘 진행되는 것 같습니다.
그러나, GameContainer.render()
메서드가 호출되면 범위를 벗어난 것으로 보입니다. 로그 메서드는 undefined
을 출력합니다.
저는 TypeScript에 익숙하지 않고 JavaScript에 대해서도 깊이 생각하지 않습니다 (특히 스코프에 있어서는 혼란 스럽습니다 : /). 어떻게 그러나 이것을 해결할 수 있습니까?
Main 클래스 :
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;
}
}
게임 Container 클래스 :
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' 슈퍼 클래스에 정의되어 있습니다 – tBureck
이 질문을보십시오 : https://typescript.codeplex.com/ discussion/445528. Stack Overflow에서 1000 번째 타이프 스크립트 질문에 대해 축하드립니다 :) – rob