使用 svg.draw.js 时多边形中的重复点

Repeated points in polygon when using svg.draw.js

当我使用 draw() 创建多边形时,它会插入一些点 2 次。例如,当我创建一个有 4 个点的多边形时

<polygon id="SvgjsPolygon1063" points="179,177 179,177 397,147 323,381 323,381 88,350 88,350" class="labelbox shape"></polygon>

如果我从元素中手动删除重复的点,我发现形状没有区别。但是,如果我移动或重塑多边形,它会再次插入 7 个点。

如果你能解释一下逻辑,这将很有帮助,这样我就可以保留独特的点并正确地恢复它们。

来自 main application 的简化代码;

var createPolygon = function(){//TODO: bug: creating duplicate points
    var poly =  myCanvas.nested().polygon().addClass('labelpolygon shape').draw();
    poly.resize();
    poly.parent().draggable();

    poly.on('drawstart', function(e){
        document.addEventListener('keydown', function(e){
            if(e.keyCode == 13){
                poly.draw('done');
                poly.off('drawstart');
            }
        });
    });

    return poly;
}
myCanvas.on('mousedown', function(event){

    if(!alreadyDrawing){
        var currentTool = createPolygon(event,myCanvas);

        currentTool.on('drawstart', function(){
            alreadyDrawing = true;
        });
        currentTool.on('resizedone', function(){
            //update data
        });
        currentTool.draw(event);
        selectedElement = currentTool;
    }
});

myCanvas.on('mouseup', function(event){
    selectedElement.draw(event);
});

function attachEvents(currentTool){
    currentTool.parent().on('click',function(e) {
        currentTool.selectize({ rotationPoint: false});
        e.stopPropagation();
    });
}

draw 在没有事件的情况下调用它时具有标准行为。在这种情况下,它会自动绑定到 click 事件。然后,当您也开始通过事件调用 draw 时。它会打乱逻辑并产生你得到的结果。

要解决此问题,请选择一个选项。 如果您想要更多控制权,请传递该事件。如果您对点击行为没问题,只需调用 draw 而不带任何参数