我知道有类似的问题,但是我的情况并不适用,我不能浪费更多时间。
我正在学习JS所以我正在尝试编写一个简单的pacman游戏。在这种情况下,每当pacman吃掉一个通电时,所有活跃的鬼魂都必须变成弱鬼。
问题出现在我正在玩的时候,我抓住了一个电源,游戏崩溃说:
Uncaught TypeError: Cannot set property 'isWeak' of undefined.
我没有在这个问题中发布所有代码。只有错误来自的主要部分(我想是这样)。
我在main.js中的代码:
var activeGhosts = [];
var powerups = [];
for (var i = 0; i < powerups.length; i++) {
if (pacman.collision(powerups[i])) {
makeWeak();
powerups.splice(i,1);
}
}
function makeWeak() {
for (var i = 0; i < activeGhosts.length; i++) activeGhosts[i].isWeak = true;
}
我在ghost.js中的代码:
function Ghost(x,y,img){
this.x = x;
this.y = y;
this.img = img;
this.direction = 0;
this.radius = 16; // half of 32 px because every image is 32x32 px
this.crash = false;
this.isWeak = false;
this.show = function () {
if (this.isWeak) {
image(weakghostimg, this.x, this.y);
} else {
// img can be the all the different ghosts
image(img, this.x, this.y);
}
};
答案 0 :(得分:0)
我有一个23x22列的平台,有不同的符号。如果我发现&#34;重新&#34;这意味着我必须在那个位置创造一个红色幽灵。
var ghosts = []; // array to draw them
var activeGhosts = []; // array to keep them alive and moving around
for (var i = 0; i < plat.rows; i++) {
for (var j = 0; j < plat.columns; j++) {
if (plat.platform[i][j] === 're') ghosts.push(new Ghost(j * 32, i * 32, redGhostimg));
这是我用来将ghost插入activeGhosts数组的函数。为了开始幽灵的移动,每2秒我将一个幽灵移动到另一个阵列中。
function ghostsEscape() {
if (ghosts.length > 0) {
var tempGhost = ghosts.pop();
tempGhost.escape(plat);
activeGhosts.push(tempGhost);
} else if (ghosts.length === 0) return;
setTimeout(ghostsEscape, 2000);
}