Ошибка выбора fabricjs2 после программного изменения размера - PullRequest
0 голосов
/ 29 ноября 2018

Я использую ткани v2.4.3 в угловом проекте 6.В моем проекте я хочу переместить и изменить размеры некоторых объектов (a fabric.Group) как с помощью мыши, так и путем редактирования свойств через форму.

Проблема заключается во втором методе.

Я поместил объект на холст и выделил его мышью.Теперь я подписан на форму valueChanges для применения в реальном времени новых реквизитов выбранного объекта.

this.subscription = this.form.valueChanges.subscribe((value)=>{
  this.panelView.setConfig(value);  
})

Это метод setConfig:

setConfig(config:PanelParameters){
    this.config = config;
    let param = {            
        top: this.config.y,
        left: this.config.x,

        width: this.view.width, //this.config.width,
        height: this.view.height,

        scaleX: this.config.width/this.view.width,
        scaleY: this.config.height/this.view.height,
        fill : this.config.background_color

    }
    this.view.set(param)

    for(let obj of this.view.getObjects()){
        if(  obj instanceof fabric.Rect){
            obj.set({
                fill: this.config.background_color
            })
        }else if( obj instanceof fabric.Text ){
            obj.set({
                fill: this.config.title_text_color
            })
        }
    }

    this.canvas.requestRenderAll();
}

Теперь на холстобъект отображается правильно, но если я пытаюсь выбрать его, мне нужно нажать на область старого объекта.

Что я делаю не так?

1 Ответ

0 голосов
/ 02 декабря 2018

Вы пропускаете вызов this.view.setCoords().

В fabric.js взаимодействия мыши оцениваются по отношению к oCoords объекта.Когда вы программно устанавливаете свойства объекта, которые должны привести к изменению координат, вы должны явно вызвать setCoords(), чтобы пересчитать их.См. Когда звонить setCoords .

...