BenderIsGreat34
@BenderIsGreat34
junior front-end

Рандомный выбор спрайта для рендера?

В папке лежат 4 спрайта с именами block1, block2... с разрешением png. Как при каждом новом обращении к функции render использовать рандомный спрайт для его отрисовки? На данный момент каждое срабатывание функции выдаёт один и тот же спрайт, что я указал, в данном случае это спрайт block1
var game = {

  // Наш объект, игровое окно, здесь прописываются основные его параметры
  ctx: undefined,
  endGame: false,
  width: 480,
  height: 640,
  maxBlockHeight: 0,
  canCreateBlock: true,
  activeBlocks: [],
  stableBlocks: [],
  level: 15,
  sprites: {
    block1: undefined,
    block2: undefined,
    block3: undefined,
    block4: undefined
  },
// Функция, подгрудающая спрайты из массива спрайтов
  load: function() {
    for (var key in this.sprites) {
      this.sprites[key] = new Image();
      this.sprites[key].src = "res/" + key + ".png";
    }
  },

  //Функция, инициализирующая игру.

  start: function() {
    this.init();
    this.load();
    this.run();
  },

  // Функция отрисовки, так же вызывается постоянно, после функции апдейта.
  render: function() {
    this.ctx.clearRect(0, 0, this.width, this.height);
    this.activeBlocks.forEach(function(element) {
      this.ctx.drawImage(this.sprites.block1, element.x, element.y, element.width, element.height)
    }, this);
    this.stableBlocks.forEach(function(element) {
      this.ctx.drawImage(this.sprites.block1, element.x, element.y, element.width, element.height)
    }, this);
  },
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
spritesLength = Object.values(sprites).length  // массив всех значений объекта
random = Math.floor(Math.random() * spritesLength)   // случайный номер
myRandomSprite = Object.values(sprites)[random]  // случайное значение
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы