Повторные точки в многоугольнике при использовании svg.draw.js - PullRequest
0 голосов
/ 03 июня 2018

Когда я создаю многоугольник, используя 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 точек.

  • В случае 3-точечного (треугольника) многоугольника, общее количество очков составляет 5.
  • В случае 4-точечного многоугольникаобщее количество баллов равно 7.
  • В случае многоугольника из 5 баллов общее количество баллов равно 8.

Будет полезно, если вы сможете объяснить логику, чтобы я мог сохранять уникальные точкии восстановите их правильно.

Упрощенный код из основного приложения ;

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();
    });
}

1 Ответ

0 голосов
/ 13 июня 2018

draw имеет стандартное поведение при вызове без события.В этом случае он автоматически связывается с событием click.Когда вы затем начнете звонить draw с событием тоже.Это испортит логику и даст результат, который вы получаете.

Чтобы решить эту проблему, выберите один из вариантов.Если вы хотите больше контроля, пропустите событие.Если вы в порядке с поведением щелчка, просто позвоните draw без каких-либо параметров

...