JSXGraph: опция withLines/setAttribute

Я хотел бы нарисовать многоугольник без его границ. Это работает, если я добавлю опцию {withLines: false} или {borders:{visible:false}} в вызов create(...). Однако, если я пропущу этот параметр при создании и захочу изменить его позже, используя setAttribute(...), линии все равно будут видны.

Это показано в следующем коде (http://jsfiddle.net/1teoLz7p):

var board = JXG.JSXGraph.initBoard('box', {
        boundingbox: [-5,5,5,-5], 
        keepaspectratio: true, 
    });

var ABC = [board.create('point',[0,0]),
    board.create('point',[1,3]),
    board.create('point',[3,2])];

var poly1=board.create('polygon', ABC, {withLines:false});

var DEF = [board.create('point',[-1,0]),
    board.create('point',[-2,3]),
    board.create('point',[-4,2])];

var poly2=board.create('polygon', DEF);
poly2.setAttribute({withLines:false}); // doesnt work

Первый, прямоугольный треугольник показан, как и ожидалось, но во втором, левом треугольнике видны линии.

Как изменить эту опцию после создания звонка??


person user3588673    schedule 12.10.2019    source источник


Ответы (1)


Вы правы, невозможно сделать линии невидимыми, вызвав только polygon.setAttribute(). Причина в том, что setAttribute еще не может использовать подобъекты, как в {borders {visible: false}}, а также другой подход - настройка withLines:false - не работает, потому что атрибут withLines не является динамическим. Это в основном предотвращает создание линий из соображений эффективности при строительстве полигона.

Мы обсудим, включим ли мы эти две проблемы в будущей версии. На данный момент способ сделать линии невидимыми следующий:

 var ABC = [[0,0], [1,3], [3,2]];
 var poly1=board.create('polygon', ABC, {withLines:false});
 var DEF = [[-1,0], [-2,3], [-4,2]];
 var poly2=board.create('polygon', DEF);

 var i;
 for (i = 0; i < poly2.borders.length; i++) {
     poly2.borders[i].setAttribute({visible: false});
 }
person Alfred Wassermann    schedule 14.10.2019