javascript - Fabric JS 父子对象

标签 javascript html canvas fabricjs

我正在尝试使用 Fabric JS 来创建座位表应用程序。我为平面图和每个用户都有单独的对象。我可以将它们全部独立地移动。我希望用户成为平面图的父级,这样当我移动平面图对象时,所有用户都会随之移动。有没有办法用布料做到这一点?

最佳答案

找到了一种方法;尽管我仍然想知道 Fabric 框架是否有办法自动处理这个问题,而不是自己为所有父子关系创建它。

// Create canvas
canvas = new fabric.Canvas('c');
img = document.getElementById("cur_image");

// Create parent object
background = new fabric.Image(img, {
    left: 0,
    top: 0,
    angle: 0,
    opacity: 1.0
});
canvas.add(background);

// Connect move handler that will move the children
background.on('moving', backgroundMoveHandler);

children = [];
function addItem() {
    var rect = new fabric.Rect({
        left: 100,
        top: 100,
        fill: 'red',
        width: 50,
        height: 50
    });
    canvas.add(rect);
    children.push(rect);
}

// Add some children
addItem();
addItem();

// Whenever the parent is moved, move the children as well.
function backgroundMoveHandler(options) {
    var x = options.e.movementX;
    var y = options.e.movementY;
    $.each(children, function(i, obj) {
        obj.set('left', obj.left + x);
        obj.set('top', obj.top + y);
        obj.setCoords();
    });
}

关于javascript - Fabric JS 父子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30133746/

相关文章:

php - 是什么导致 IE8 阻止某些文件下载?

html - CSS 样式表可以是双向的吗?

css - 背景图像不垂直重复

javascript - 以编程方式附加内容而不丢失 html 标签

javascript - canvas 或 requestAnimationFrame 在移动设备上速度很慢

javascript - 我得到的 mouseEvent.offsetX 比实际 Canvas 大小大得多

javascript - 如何检查 Canvas 上是否绘制了某些东西

javascript - 如何更改 JavaScript 中的图像可见性?

javascript - 如何解决Google Charts loader.js只能加载一次

javascript - google.maps.Polyline - 如何获得透明/不可见的折线?