我得到了这个代码,VS编译得很好,但是在Chrome中运行会给出'Uncaught TypeError:无法设置属性'height'的undefined'
canvas: HTMLCanvasElement = null;
constructor(...) {
this.canvas = <HTMLCanvasElement>document.getElementById("canvas");
if (this.canvas == null || this.canvas == undefined) {
// Freak out. The canvas element does not exist.
console.log("The canvas element 'canvas' does not exist!);
}
else {
console.log("Got canvas! "+this.canvas);
}
...
}
Resize(): void {
var screenSize = {
width: window.innerWidth,
height: window.innerHeight
};
if (screenSize.height * this.aspectRatio > screenSize.width) {
this.canvas.width = screenSize.width;
this.canvas.height = screenSize.width * (1 / this.aspectRatio);
}
else {
this.canvas.height = screenSize.height;
this.canvas.width = screenSize.height * this.aspectRatio;
}
}
错误发生在从底部开始的thrid行中,但我认为它会在访问画布的任何位置出现。构造函数中的if语句并不吓坏。 我来自Java,因此想做打字稿而不是javascript,以便有更多的东西,但到目前为止我已经受到了很好的保护c:
答案 0 :(得分:1)
正如您的评论所说,您这样称呼它: window.addEventListener(“resize”,this.Resize,false);
如果将其更改为此,则可以正常工作:
window.addEventListener("resize", () => { this.Resize() }, false);
您还可以将调整大小功能更改为此(这将保存“此”上下文):
private Resize = () => {
}