Как мне создать несколько экземпляров классов в JavaScript? - PullRequest
0 голосов
/ 23 февраля 2019

Я хотел бы создать потенциально неограниченное количество экземпляров определенного класса в моем документе javascript:

let trees;
const treespawn = () => {
  let x = random(50, windowWidth - 50);
  let y = random(windowHeight /22, windowHeight / 1.13);
  for (let i = 0; i < 20; i++) {
    trees[i] = new Trees(x, y);
    return trees[i];
  }
}

function draw() {
  background(0, 111, 10);
  trees.trunk();
  trees.leaves();
  trees.shudder();
}

class Trees {
  constructor(x, y) {
    stuff--stuff--stuff
  }
  trunk() {
    stuff--stuff--stuff
  }
  leaves() {
    stuff--stuff--stuff
  }
  shudder() { 
    stuff--stuff--stuff
  }
}

Некоторые точки:

  • деревьяпеременная объявлена ​​глобально, потому что я не могу придумать, как сохранить вызовы функций класса в области видимости.

  • Я использую p5, поэтому функция draw.Я создал все свои другие классы в функции setup ().

Основное объяснение:

Я бы хотел создать объект класса Trees много раз и иметьони появляются на моем холсте в начале каждого уровня игры, которую я делаю.Для этого потребуется около 20 деревьев на уровень внутри параметров, установленных для значений x и y.На более высоких уровнях моей игры я могу увеличить количество деревьев.

Вы можете видеть, как просто выписать 20-30 объявлений переменных, создать эти классы и вызвать все функции внутри каждого класса было бы непрактично.

Я понимаю, что это должно быть сделано каким-то образомметодологии массива.Может ли кто-нибудь помочь мне здесь?

Заранее спасибо!

Обновление:

Насколько я получил, и сообщения об ошибке консоли нет, но я не вижу деревьев нахолст.

function draw() {
  background(0, 111, 10);

  () => {
    let x = random(50, windowWidth - 50);
    let y = random(windowHeight /22, windowHeight / 1.13);
    for (let i = 0; i < 20; i++) {
      trees[i] = new Trees(x, y);
      trees[i].trunk();
      trees[i].leaves();
      trees[i].shudder();
    }
  }
}

1 Ответ

0 голосов
/ 23 февраля 2019

Обновление

random не является встроенной функцией Javascript, поэтому, если вы не получаете ее из библиотеки или из другого места, вам может потребоваться определить ее:

function random(lowerBound, upperBound) {
    var range = upperBound - lowerBound + 1;
    return Math.floor(Math.random() * range);
}

Попробуйте это:

class Trees {
  constructor() {
    stuff--stuff--stuff
  }
  trunk() {
    stuff--stuff--stuff
  }
  leaves() {
    stuff--stuff--stuff
  }
  shudder() { 
    stuff--stuff--stuff
  }
}

const treespawn = () => {
  let x = random(50, windowWidth - 50);
  let y = random(windowHeight /22, windowHeight / 1.13);
  return new Trees(x, y);
}

let trees = [];
for (let i = 0; i < 20; i++) {
  trees.push(treespawn());
}

function draw() {
  background(0, 111, 10);
  trees.forEach(tree => {
    tree.trunk();
    tree.leaves();
    tree.shudder();
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...