Показать сообщение отдельно
  #4 (permalink)  
Старый 15.01.2021, 16:05
Новичок на форуме
Отправить личное сообщение для VladislavK_ Посмотреть профиль Найти все сообщения от VladislavK_
 
Регистрация: 15.01.2021
Сообщений: 3

private setEvent(): void {
  const cellClick = (cell: Cell) => {
    if (this.occupiedCells.has(cell)) {
      console.log('DESTROY');
    } else {
      console.log('empty');
    }
  };

  this.engine.on(this.shovelNode, 'click', (e) => {
    this.toggleState();
    this.engine.events.click.eventBubbling = !!this.isActive;
    if (this.isActive) {
      this.cells.forEach((cellRow) => cellRow.forEach((cell) => {
        this.engine.on(cell.node, 'click', () => cellClick(cell));
      }));
    } else {
       this.cells.forEach((cellRow) => cellRow.forEach((cell) => {
          this.engine.off(cell.node, 'click', () => cellClick(cell));
        }));
    }
  });
}

this.engine.on и this.engine.off то же самое, что и addEventListener, removeEventListener
this.cells - двумерный массив (игровое поле)
то есть мне надо поставить событие на каждую клетку поля(узел cell в canvas)
но если я сделаю неактиный узел shovel, то тогда удалить все прослушивания

И я точно не уверен, сработает ли такой вариант
с учетом того, что параметры переадаются разные
Ответить с цитированием