Fabric.js:如果对象在组中,则无法使用控件?

问题描述 投票:0回答:1

是关于这个小脚本的:https://jsfiddle.net/yd0mfwen/

` // 创建 Fabric.js 画布 var canvas = new Fabric.Canvas('canvas');

    img1 = new fabric.Circle({
        radius: 200,
        fill: 'grey',
        left: 10,
        top: 10,
        selectable: false,
    });
    canvas.add(img1);

            // transparent object to resize group to canvas size
    var base = new fabric.Rect({
        fill: 'transparent',
        left: 0,
        top: 0,
        selectable: false,
        width: canvas.width,
        height: canvas.height,
    });

    var circle = new fabric.Circle({
        radius: 50,
        fill: 'red',
        left: 150,
        top: 150,
        selectable: true
    });

    var circle2 = new fabric.Circle({
        radius: 30,
        fill: 'blue',
        left: 80,
        top: 110,
        selectable: true
    });


    // Create a group to apply a mask
    var group = new fabric.Group([circle, circle2, base], {
        globalCompositeOperation: 'source-in',
        hasBorders: false,
        hasControls: false,
        selectable: false
    });

    canvas.add(group);

    group.on('mousedown', function(e) {
        var innerTarget = group._searchPossibleTargets(e.e);
        canvas.setActiveObject(innerTarget);
    });

    group._searchPossibleTargets = function(e) {
        var pointer = this.canvas.getPointer(e, true);
        var i = canvas.getObjects().length,
            normalizedPointer = this.canvas._normalizePointer(this, pointer);

        while (i--) {
            if (this.canvas._checkTarget(normalizedPointer, this._objects[i])) {
                return this._objects[i];
            }
        }
        return null;
    }

`

一些背景: 对象有 3 种“类型”:面具、助手和普通对象。

mask:可以是任何形状。在这个例子中它是一个简单的圆圈。它作为第一个对象放置在画布上,稍后添加的对象(分组)将具有“globalCompositeOperation:source-in”,因此它们仅在蒙版“内部”可见。

helper:一个与画布大小相同的简单透明矩形。当前需要,因此“正常”对象组具有与画布相同的大小(因此法线移动时不需要调整大小)。

正常:在此示例中为 2 个圆圈

--

法线和助手被添加到一组,然后添加到画布中。她的问题来了: 普通对象可以按预期选择(“_searchPossibleTargets”)并且可以四处移动,但调整大小/缩放、拉伸...是不可能的。控件可见,但无法通过鼠标使用。

我尝试手动启用控件。它改变了注意,因为它们已经启用。

对此我没有任何解释。有人有什么想法吗?使用的版本是5.3.1

javascript html5-canvas fabricjs
1个回答
0
投票

您对此有解决方案吗?我们有同样的问题也许你可以分享

© www.soinside.com 2019 - 2024. All rights reserved.