это может быть действительно очевидно, но я полный начинающий программист ... может кто-нибудь сказать мне, почему это только выполняет функцию с main (5)? И как я могу изменить его так, чтобы main (2) выполнялся после main (1) и т. Д.? Благодаря!функция внутри цикла javascript выполняется только один раз
for (var k = 1; k < 6; k++){
main(k);
}
Редактировать: извините, это определение main! Я пытаюсь оживить кучу квадратов, используя холст
var main = function (speed) {
Enemy.prototype.update = function() {
var tx = 650 - this.x;
var ty = 250 - this.y;
var dist = Math.sqrt(tx * tx + ty * ty);
this.velx = (tx/dist) * speed;
this.vely = (ty/dist) * speed;
if (dist > 0) {
this.x += this.velx;
this.y += this.vely;
}
};
Enemy.prototype.isOnEnemy = function (x, y) {
return (x >= this.x && x < this.x + 25 && // 25 = width
y >= this.y && y < this.y + 25); // 25 = height
};
Enemy.prototype.render = function() {
context.fillStyle = 'rgba(255,255,255,' + this.transparency + ')';
context.fillRect(this.x, this.y, 25, 25);
};
var enemies = [];
for (var i = 0; i < 10; i++) {
// random numbers from 0 (inclusive) to 100 (exclusive) for example:
var randomX = Math.random() * 896;
var randomY = Math.random() * 1303;
console.log(randomX);
console.log(randomY);
if (randomX > 100 && randomX < 1200) {
if (randomX % 2 === 0) {
randomX = 140;
} else {
randomX = 1281;
}
}
if (randomY > 100 && randomY < 75) {
if (randomY % 2 === 0) {
randomY = 15;
} else {
randomY = 560;
}
}
var enemy = new Enemy(randomX, randomY, 0, 0, 1);
enemies.push(enemy);
}
for (var i = 0; i < 15; i++) {
// random numbers from 0 (inclusive) to 100 (exclusive) for example:
var randomX = Math.random() * 200;
var randomY = Math.random() * 403;
console.log(randomX);
console.log(randomY);
if (randomX > 100 && randomX < 1200) {
if (randomX % 2 === 0) {
randomX = 140;
} else {
randomX = 1281;
}
}
if (randomY > 100 && randomY < 75) {
if (randomY % 2 === 0) {
randomY = 15;
} else {
randomY = 560;
}
}
var enemy = new Enemy(randomX, randomY, 0, 0, 1);
enemies.push(enemy);
}
context.canvas.onmousemove = function (e) {
var rect = this.getBoundingClientRect(),
x = e.clientX - rect.left,
y = e.clientY - rect.top,
i = 0;
for (; i < enemies.length; i++) {
if (enemies[i].isOnEnemy(x, y)) {
enemies[i].transparency = 0;
}
}
};
function render() {
context.clearRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < enemies.length; i++) {
var one = enemies[i];
one.update();
one.render();
}
requestAnimationFrame(render);
}
render();
};
Я думаю, что вы выполняете задание ** async ** в функции 'main', можете ли вы опубликовать определение' main'? – Mritunjay
Это правильный цикл. Он будет циклически 5 раз и пройдет 1 - 5 в качестве аргументов main(). Нужно больше информации. Смотрите: http://jsfiddle.net/2bpd002o/ –
Даже если все инструкции внутри основной функции отложены, с этим циклом main будет правильно вызываться с каждым значением k. – Gael