나는 현재 캔버스 (자바 스크립트)를 사용하여 하향식 사수의 HTML5 게임을 만들고있어, 여기에 내 문제입니다 적 또는 예, 가끔 (무작위로) 게임 chashes을 적의와 총알,하지만를 파괴하고 오류를 반환 아닌 경우,이 오류에오류 (이 정의 된 반면) 정의되지 않은 객체
uncaught TypeError: Cannot read property 'x' of undefined
at collides (game.js:274)
at checkBulletHits (game.js:177)
at Game (game.js:346)
을 "정의되지 않은"내가 촬영 마지막 총알입니다, 하지만 이번에는 총알이 undefined
인데, 이유는 모르겠습니다. 여기
var bullets = [];
var enemies = [];
function checkBulletHits() {
if (bullets.length > 0 && enemies.length > 0) {
for (j = bullets.length - 1; j >= 0; j--) {
for (k = enemies.length - 1; k >= 0; k--) {
if (collides(enemies[k], bullets[j])) {
enemies.splice(k, 1);
bullets.splice(j, 1);
player.points += 10;
}
}
}
}
}
function collides(a, b) {
return a.x < b.x + b.w &&
a.x + a.w > b.x &&
a.y < b.y + b.h &&
a.y + a.h > b.y;
}
checkBulletHits();
전체 코드 : 당신이 충돌이있을 때 https://pastebin.com/H2Cw1g5j
'collides' 함수는'a.x'와'b.x'를 사용하려고 시도하고 있지만'x'는 거기에 있지 않습니다. 'x'를 선언 한 곳을 찾아서'collides()'가 그것을 사용하려고 할 때까지 적절한 값을 가지고 있는지 확인해야합니다. 귀하의 주요 문제에 관해서는,'collides()'는 두 개의 인수를받는 것으로되어 있지만, 오류는 단지 하나만 호출되거나, 두 번째 인수는 사용될 때 'undefined'값을가집니다. –
@ScottMarcus : 스코프는 여기서 문제와 관련이 없습니다. – Cerbrus