Элемент, видимый через флажок в JSXGraph: изменение других параметров?

#checkbox #jsxgraph

#флажок #jsxgraph

Вопрос:

Предположим, что в ваш JSXGraph добавлены следующие элементы board :

 var checkbox1 = board.create('checkbox', [1, 0.5, 'Click me']);
var p = board.create('point', [1, 0], {
        visible: function() {return checkbox1.Value();},
        label:{offset:[15,15]}
});
 

Почему наличие функции внутри visible изменяет значения, заданные внутри label ? (Комментируя строку visible... , вы замечаете разницу.)

Ответ №1:

Да, действительно, использование функции в качестве значения для атрибута visible , похоже, влияет на положение метки. Но проблема еще более сложная: значение атрибута anchorY метки по умолчанию middle равно , т.Е. При offset установленном значении атрибута [0,0] метка центрируется по вертикали рядом с точкой p . Однако, чтобы иметь возможность размещать метку по вертикали по центру, JSXGraph должен знать размер текстового поля метки. К сожалению, если метка создается с visible:false помощью, размер текста не может быть определен (на данный момент).

Короче говоря, проблема в том, что точка создается с visible:false помощью . Если ваш код будет

 var checkbox1 = board.create('checkbox', [1, 0.5, 'Click me']);
var p = board.create('point', [1, 0], {
    visible: function() {return !checkbox1.Value();},
    label:{offset:[15,15]}
});
 

положение метки соответствует ожидаемому.
Возможным обходным путем было бы указать пользователю другое значение для anchorY like:

 var checkbox1 = board.create('checkbox', [1, 1.5, 'Click me']);
var p = board.create('point', [1, 0], {
    visible: function() {return checkbox1.Value();},
    label:{offset:[15,0], anchorY: 'bottom'}
});
 

Смотрите его в прямом эфире на https://jsfiddle.net/1u7geLar /