0
我一直在做一個畫布遊戲,我一直在嘗試使用對象和方法來實現這一點。現在我遇到了一個問題。這很難解釋。基本上有一堆正方形應該隨機移動。方形對象內部的方法使用setInterval方法每1/10秒移動一次方形。每10秒添加一個新的方形。一旦新廣場被添加,就會出現問題。除1平方以外的所有移動。其他人被凍結(他們不應該)。我希望我能夠解釋它夠好,這裏是問題領域。SetInterval在JavaScript對象中表現怪異
function enemy(clr, cx, cy) {
this.color = clr;
this.cordX = cx;
this.cordY = cy;
this.move = function() {
color = this.color;
cordX = this.cordX;
cordY = this.cordY;
setInterval(function() {
var direction = Math.floor(Math.random() * 4);
switch (direction) {
case 0:
if (cordX + 20 <= 480) {
context.clearRect(cordX, cordY, 20, 20);
cordX = cordX + 20;
context.fillStyle = color;
context.fillRect(cordX, cordY, 20, 20);
}
break;
case 1:
if (cordX - 20 >= 0) {
context.clearRect(cordX, cordY, 20, 20);
cordX = cordX - 20;
context.fillStyle = color;
context.fillRect(cordX, cordY, 20, 20);
}
break;
case 2:
if (cordY + 20 <= 480) {
context.clearRect(cordX, cordY, 20, 20);
cordY = cordY + 20;
context.fillStyle = color;
context.fillRect(cordX, cordY, 20, 20);
}
break;
case 3:
if (cordY - 20 >= 0) {
context.clearRect(cordX, cordY, 20, 20);
cordY = cordY - 20;
context.fillStyle = color;
context.fillRect(cordX, cordY, 20, 20);
}
break;
}
}, 100);
}
}
和方創作者:
var newEnemy = new enemy("rgb(" + Math.floor(Math.random() * 200) + "," + Math.floor(Math.random() * 200) + "," + Math.floor(Math.random() * 200) + ")", Math.floor(Math.random() * ((500 - 0)/20)) * 20 + 0, Math.floor(Math.random() * ((500 - 0)/20)) * 20 + 0);
newEnemy.move();
enemyNum = enemyNum + 1;
}, 10000);
你可以看看它在行動here