Итак, я создаю игру в формате HTML/JS (чаще всего JQuery).Несколько экземпляров объекта, мешающего
У меня есть массив объектов, инициализированных в начале игры (когда пользователь нажимает P для воспроизведения). Каждый объект является падающим объектом (я знаю, что он терпит неудачу с булевым именем «working»), с «move» метод, устанавливающий позицию, идущую от 1 до 22. Каждый раз, когда он перемещается, он показывает текущий div с номером в качестве идентификатора (представляющим позицию) и скрыть предыдущий div.
Проблема в том, что игра отлично работает только с одним экземпляром объекта (так что только одна ячейка в массиве), но когда я пытаюсь поместить несколько других объектов, они не перемещаются.
Вот конструктор объекта:
function flyers(){
this.pos = 0;
this.working = false;
this.jump = 0;
this.interval;
this.move = function(){
if (this.working == true){
if (this.pos == 22)
{
$("#perso21").hide();
this.pos = 0;
this.startWork();
}
checkSave();
if (this.jump == 0)
{ if ((this.pos == 5 && playerPos != 1) || (this.pos == 13 && playerPos != 2) || (this.pos == 19 && playerPos != 3))
{
this.die();
}
if ((this.pos == 4 && playerPos == 1) || (this.pos == 12 && playerPos == 2) || (this.pos == 18 && playerPos == 3))
this.jump = 1;
}
else
{
if (this.pos == 5 || this.pos == 13 || this.pos == 19)
{
score++;
this.jump = 0;
}
$(".score").html("" + score + "");
}
$("#perso" + (this.pos - 1) + "").hide();
$("#perso" + this.pos + "").show(); this.pos++;
}
else
clearInterval(this.interval);
};
this.startWork = function()
{
clearInterval(this.interval);
this.working = true;
this.interval = setInterval(this.move, 1000 - (score/10 * 100));
}
this.die = function(){
this.working = false;
this.pos = 0;
this.jump = 0;
if (miss < 2)
{
miss++;
}
else
{
quitGame();
}
clearInterval(this.interval);
};
return this;}
и инициализация массива:
flyerstab[0] = new flyers();
flyerstab[1] = new flyers();
flyerstab[2] = new flyers();
flyerstab[3] = new flyers();
flyerstab[0].startWork();
порождения (только возможно, чтобы иметь 4 предметов, падающих в то же время)
spawn = setInterval(function()
{
var i;
for (var i = flyerstab.length - 1; i >= 0; i--) {
if (flyerstab[i].working == false)
{
flyerstab[i].startWork();
break;
}
else
console.log(i + " is working");
};
}, 5000 - (score/10 * 100));
Я пытался найти, почему весь день, но мне это не удалось ... Я их плохо конструирую?
Вы не называете startWork() другими флажками в flyerstab? – pmac89
Ой хорошо, не поместил код создателя ... Редактирование. –
Отсутствует какой-то контекст здесь, но если все ваши экземпляры флаеров скрывают одни и те же элементы (например, # perso21, # perso + pos), то в лучшем случае они просто нажимают друг на друга. – brianvaughn