Удалить определенные фигуры, созданные с помощью paperJS

Я создал простой маркер изображения с кругом, прямоугольником и линией. Как я могу удалить фигуры, которые мне не нужны. Я сохранил координатные точки в массиве. Как я могу продолжить любую помощь. Вот скрипка

Вот функция для вставки в массив

function onMouseUp(event) {
            console.log(cPath.points[0]);
            console.log(cPath.downpoints[0]);
            if(set == 1){
                i++;
                circles.push(circle);
                createElem('circle', i);
                cPath.points.push(event.point);
                cPath.downpoints.push((event.downPoint - event.point).length);
            }else if(set == 2){             j++;
                rects.push(rect);
                createElem('rect', j);
            }else if(set == 3){
                k++;
                lines.push(line);
                createElem('line', k);  
            }else if(set == 4){
                l++;
                createElem('Free Path', l);
            }
        };

person chiyango    schedule 05.06.2013    source источник


Ответы (1)


Согласно документации paperjs путь имеет метод remove(), который удаляет путь из вашего документа paperjs

И поскольку вы храните все свои элементы (пути) в массивах, удалить их с холста относительно легко. Вот пример фрагмента javascript, который удалит все элементы в заданном массиве:

function removeItems(items) {
    var len = items.length;
    while(--len < -1) {
       // remove item from the document using paperjs method
       items[len].remove();
       // also remove the item from our own array
       items.splice(len, 1);
    }
}

http://jsfiddle.net/PLzDC/3/
вот скрипт, который показывает, как удалить все прямоугольники, когда вы рисуете круг (он удаляет их при наведении мыши)

Изменить:

фрагмент для удаления элементов, имеющих только заданное имя из заданного массива

function removeItems(items, name) {
    var len = items.length;
    while(--len < -1) {
       if(items[len].name == name) {
            // remove item from the document using paperjs method
            items[len].remove();
            // also remove the item from our own array
            items.splice(len, 1);
       }
    }
}

Использование (учитывая, что вы фактически дали кругу имя «circle1» при создании):

removeItems(circles, 'circle1');
person Henrik Peinar    schedule 05.06.2013
comment
Я не это имею в виду. Все фигуры должны быть представлены выборочно, я должен удалить круг или прямоугольник и т. д., - person chiyango; 06.06.2013
comment
Извините, чем я не могу понять, что вам нужно, если вы не это имели в виду. Вы хотите нарисовать только один из каждой группы? Или скрыть другие при рисовании круга? Не могли бы вы объяснить вариант использования немного больше - person Henrik Peinar; 06.06.2013
comment
Хорошо, возьмем пример: я рисую 5 кругов, назовите их круг1, круг2 и т. д., аналогично я рисую 5 прямоугольников, назовите их прямоугольниками rect1, rect2 и т. д. Теперь я хочу удалить только круг2. Вы понимаете. Взять эталонный сайт - person chiyango; 06.06.2013
comment
Просто сделайте оператор if в цикле, чтобы удалить только элемент с заданным именем... Я отредактировал функцию, скрипка все еще старая. Кроме того, вы фактически не называете ни одного из своих путей в коде вопросов. Поэтому, прежде чем удалять их по имени, вы должны назвать их в первую очередь. - person Henrik Peinar; 06.06.2013