События фабрики связаны с объектом, который их запускает, что означает, что здесь:
canvas.on('mouse:down', function(e){
this.canvasMouseDown(e);
});
this
является экземпляром canvas
.И когда вы звоните this.canvasMouseDown()
, вы, по сути, звоните canvas.canvasMouseDown()
, так что отсюда и ошибка.Попробуйте использовать функцию стрелки в качестве обработчика события:
loadCanvas(){
canvas.on('mouse:down', (e) => {
this.canvasMouseDown(e);
});
}