1 из всех методов объекта не работает с щелчком мыши по событию EventHandler - PullRequest
0 голосов
/ 20 апреля 2020

Все методы в классе выше работают нормально, если их вызывать.

Но когда я вызываю их с помощью addEventListener (Click), метод объекта open () делает не работает, но здесь работают и другие методы. Пожалуйста, помогите мне найти, где я допустил ошибку?

class Cell {
    constructor (x,y) {
        this.x = x
        this.y = y
        this.w = cellWidth
        this.h = cellHeight
        this.opened = false
        this.hasMine = true

    }
    squareTest () {
        c.beginPath()
        c.rect(100,100,100,100)
        c.stroke()
    }

    cellBody () {
        c.beginPath()
        c.fillStyle = "rgba(0, 100, 100, 0.1)"
        c.strokeStyle = "rgba(0, 100, 100, 1)"
        c.rect (this.x, this.y, this.w, this.h)
        c.fill()
        c.stroke ()

        if (this.opened === true) {
            if (this.hasMine === true) {
             c.beginPath();
             c.ellipse(this.x + this.w/2, this.y + this.w/2, 10, 10, 15,0,Math.PI*2,false);
             c.stroke()
            }
        }
    }

    open () {
        if(this.opened == false) {this.opened = true}
    }
        }

}

// Я удалил некоторый код здесь, чтобы сделать это сообщение short.

// функция open () работает нормально без addEventListener (Click), // но другие методы работают везде, так что же отличается от open ()?

// table [ 0] [0] является объектом ячейки класса

table[0][0].open();
// works fine here

table[0][0].squareTest();
// works fine here

canvas.addEventListener ('click', function (event) 
  {
    table[0][0].open(); // DOES NOT WORK HERE

    table[0][0].squareTest(); //works fine here
    console.log (table[1][1]); //works fine
    }
)

table[0][0].open();
    // works fine here

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

В коде не было ошибок .... Но я не получил желаемый вывод, потому что была другая функция, которая не была вызвана с open ()

Спасибо всем :)

0 голосов
/ 20 апреля 2020

canvas.addEventListener добавляет анонимную функцию для вызова onclick

Вам следует назначить переменную для таблицы [0] [0] снаружи, если вы хотите вызвать ее внутри этой функции.

const tb = table[0][0];
canvas.addEventListener('click', function (event) 
   {
     tb.open();
     tb.squareTest();
   }
);

Таким образом, у вас будет ссылка на эту таблицу, которая будет использоваться внутри вашей функции onclick;

Это предполагает, что у вас есть консольная ошибка, которая говорит, что таблица [0] [0] не определена. Это тот случай?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...