условное обновление свойств строки в jsxgraph - PullRequest
0 голосов
/ 13 июня 2019

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

Я пробовал следующие способы

var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-7, 5, 12, -5], axis:true, keepAspectRatio:true});
var p1 = board.create('point', [-1, 0]);
var p2 = board.create('point', [0, 0]);
var s =  board.create('segment', [p1, p2]);
if (p1.XEval()>0) {s.setProperty({dash:2});}

и

var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-7, 5, 12, -5], axis:true, keepAspectRatio:true});
var p1 = board.create('point', [-1, 0]);
var p2 = board.create('point', [0, 0]);
var s =  board.create('segment', [p1, p2], {function(){if (p1.XEval()>0) {return 'dash:2';}}});

но они не работали (линия всегда сплошная).

Спасибо за любую подсказку !!

1 Ответ

0 голосов
/ 14 июня 2019

Самый быстрый способ сделать это -

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

var p1 = board.create('point', [-1, 1]);
var p2 = board.create('point', [0, 1]);
var s =  board.create('segment', [p1, p2], {
        dash: function() { return (p1.X() < p2.X()) ? 0 : 1 }
    });

Значения большинства атрибутов в JSXGraph могут быть функциями, возвращающими подходящее значение.

Смотрите его в реальном времени на http://jsfiddle.net/b59drc3u/.

...