Подтвердить что ты не робот

Ткань js весов не работает

Я использую этот код для добавления textbox в canvas с помощью fabric js,

var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
    left: getCardLeft() + 100,
    top: getCardTop() + 10,
    width: 200,
    height: 20,
    fontFamily: 'Helvetica',
    fill: getColorPickerForegroundColor(),
    fontWeight: '',
    fontSize: parseInt('25'),
    originX: 'center',
    hasRotatingPoint: true,
    centerTransform: true,
});
canvas.add(textSample);

Что успешно добавить textbox в canvas. Теперь, если я попытаюсь сделать это bold, используя эту команду

canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();

Работа, но когда вы пытаетесь изменить его на нормальный,

canvas.getActiveObject().set("fontWeight", "");
canvas.getActiveObject().set("fontWeight", "100");
canvas.getActiveObject().set("fontWeight", "normal");
canvas.renderAll();

не работает.

Я не знаю, где проблема. Я делаю что-то не так здесь?

Его поведение странное Вы можете увидеть это здесь.

посетите первый здесь Затем посетите здесь

4b9b3361

Ответ 1

Я просто беру fabric.js из здесь и заменяюсь моим, и все работает.

Ответ 2

Следующий код работает для меня. Я вижу два момента, в которых я мог не сработать на вашей стороне:

canvas.renderAll();

Нужно правильно переиздавать. А также:

canvas.setActiveObject(textSample);

был необходим для меня. Потому что иначе:

canvas.getActiveObject();

был undefined. Теперь полный пример рабочего кода:

var canvas = new fabric.Canvas('c', { selection: false });
var text = 'Type Text Here';

var textSample = new fabric.Textbox(text, {
  left: 300,
  top: 50,
  width: 200,
  height: 20,
  fontFamily: 'Helvetica',
  fill: "#fac",
  fontWeight: '100',
  fontSize: parseInt('25'),
  originX: 'center',
  hasRotatingPoint: true,
  centerTransform: true,
});

canvas.add(textSample);
canvas.setActiveObject(textSample);
canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();
canvas.getActiveObject().set("fontWeight", "100");
canvas.renderAll();

Надеюсь, что это поможет.