Jquery 织物使组保持在同一位置

Jquery 织物使组保持在同一位置,jquery,fabricjs,Jquery,Fabricjs,我的意图是,当我点击按钮时,它将选择画布中的所有文本对象,我从朋友那里得到了帮助并完成了它,但现在的问题是我想将此功能设置为按钮,但当我多次点击按钮时,组位置将跳转,我如何使组位置保持在同一位置 此处演示这应该可以修复它(我在函数顶部添加了canvas.discardActiveGroup()): (我还清理了getObjects(),因为您可以传递一个字符串来获取“文本”对象) 这是您的JSFIDLE更新版 希望这能有所帮助,如果你还有其他问题,请告诉我 var canvas = new fa

我的意图是,当我点击按钮时,它将选择画布中的所有文本对象,我从朋友那里得到了帮助并完成了它,但现在的问题是我想将此功能设置为按钮,但当我多次点击按钮时,组位置将跳转,我如何使组位置保持在同一位置

此处演示

这应该可以修复它(我在函数顶部添加了
canvas.discardActiveGroup()
):

(我还清理了
getObjects()
,因为您可以传递一个字符串来获取“文本”对象)

这是您的JSFIDLE更新版

希望这能有所帮助,如果你还有其他问题,请告诉我

var canvas = new fabric.Canvas('c');

// Add some example shapes
var circle = new fabric.Circle({
  radius: 20, fill: 'green', left: 100, top: 100
});
var triangle = new fabric.Triangle({
  width: 20, height: 30, fill: 'blue', left: 50, top: 50
});

canvas.add(circle, triangle);

// Add some example text
var text1 = new fabric.Text('hello world', { left: 100, top: 100 });

var text2 = new fabric.Text('test', { left: 0, top: 0 });

canvas.add(text1, text2);

// Select all objects
function selectAllCanvasObjects(){
    var objs = canvas.getObjects().filter(function(o) {
        if (o.get('type') === 'text') {
            return o.set('active', true);
        }
    });

    var group = new fabric.Group(objs, {
        originX: 'center', 
        originY: 'center'
    });

    canvas._activeObject = null;

    canvas.setActiveGroup(group.setCoords()).renderAll();
}

$(document).on('click', '#change-btn', function(event){
selectAllCanvasObjects();
})
// Select all text objects
function selectAllCanvasObjects(){
    canvas.discardActiveGroup();

    var objs = canvas.getObjects('text').filter(function(o) {
        return o.set('active', true);
    });

    var group = new fabric.Group(objs, {
        originX: 'center', 
        originY: 'center'
    });

    canvas._activeObject = null;

    canvas.setActiveGroup(group.setCoords()).renderAll();
}