当我使用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();
});
}
答案 0 :(得分:0)
draw
具有标准行为。在这种情况下,它会自动绑定到click
事件。然后,当您开始使用事件呼叫draw
时。它会弄乱逻辑并产生你得到的结果。
要解决此问题,请选择一个选项。
如果您想要更多控制权,请传递该事件。如果您对点击行为没问题,只需拨打draw
不带任何参数