大家好,我现在是一名从我的书中学习项目的学生,这里是我遇到问题的代码。
for (var i = 0; i < numAsteroids; i++) {
var radius = 5+(Math.random()*10);
var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
var y = Math.floor(Math.random()*canvasHeight);
var vX = -5-(Math.random()*5);
asteroids.push(new Asteroid(x, y, radius, vX));***<---line 21***
};
现在,当我跑步时,一直告诉我,我有一个:
Uncaught TypeError: undefined is not a function line 21.
但我的代码到底是怎样的,这是我不理解的。如果有人能帮我解决这个问题,那就太好了!
答案 0 :(得分:1)
如果由于.push()
方法错误来自此行:
asteroids.push(new Asteroid(x, y, radius, vX));
然后,问题是asteroids
尚未初始化为数组,因此它没有方法.push()
。
您可以像这样初始化它:
var asteroids = [];
for (var i = 0; i < numAsteroids; i++) {
var radius = 5+(Math.random()*10);
var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
var y = Math.floor(Math.random()*canvasHeight);
var vX = -5-(Math.random()*5);
asteroids.push(new Asteroid(x, y, radius, vX));
}
如果未定义Asteroid
构造函数,也可能会出现此类错误。
答案 1 :(得分:0)
是否定义了Asteroid
函数?
以下作品。
var asteroids = [],
numAsteroids = 10,
canvasWidth = 10,
canvasHeight = 10,
radius = 10;
for (var i = 0; i < numAsteroids; i++) {
var radius = 5+(Math.random()*10);
var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
var y = Math.floor(Math.random()*canvasHeight);
var vX = -5-(Math.random()*5);
asteroids.push(new Asteroid(x, y, radius, vX));
};
// Is the Asteroid function/class defined?
function Asteroid(x, y, r, vX) {
}