private readonly lives: number = 5;
public loadLifeImages() {
var ammount: Array<any>;
for (var i = 0; i < this.lives; i++) {
ammount.push(i);
}
ammount.forEach((v, i) => {
console.log(this.lives);
console.log(i);
var newLifeImage = new Image();
newLifeImage.src = './assets/images/SpaceShooterRedux/PNG/UI/PlayerLife1_blue.png';
newLifeImage.onload = () => {
this.ctx.drawImage(newLifeImage, i * 50, 50, 30, 30);
}
})
}
我正在尝试将这些数字推送到Typescript中的此数组,因此我可以对每个循环使用a将图像放在画布上,但是会出现错误“无法读取未定义的属性” push””,我知道它有点翻倍,但我真的想不通其他方法。有人可以弄清楚它是什么吗?预先感谢!
答案 0 :(得分:1)
可以通过初始化ammount
来解决此问题:
var ammount: Array<any> = [];
这是因为仅输入var ammount: Array<any>
不会给ammount
赋值,所以它变成undefined
(所有javascript变量的默认值)。 = []
将变量初始化为空数组。
但是,我想指出的是,从这里的代码来看,没有充分的理由创建一个新数组并将其值推入其中。相反,您可以将forEach逻辑放在for循环中。