问题描述
我有一个JSXGraph项目,在其中创建了一个在x。轴上的点(A)和一条垂直于x轴并穿过(A)的线。移动(A)时,线应沿该点移动。到目前为止效果还不错。
但是,只要按一下按钮,我想删除直线和点,并释放包含直线和点的变量。
这是我的问题所在。删除点/线并释放变量后,update()函数仍将调用用于定义线的函数,这会导致错误,因为该函数中的变量不再存在。
知道如何解决这个问题吗?
谢谢!
链接到小提琴:https://jsfiddle.net/t9rcva1x/1/
const testBoard = JXG.JSXGraph.initBoard('jxgBox',{ axis: true });
let testPoint = testBoard.create('point',[1,0]);
function testfunction() {
return testPoint.X();
}
let testLine = testBoard.create('line',[
[testfunction,0],[testfunction,1],]);
testBoard.removeObject(testLine);
testBoard.removeObject(testPoint);
testPoint = null;
testLine = null;
testBoard.update();
解决方法
实际上,对象之间的依赖性存在问题。如果从两个坐标数组(如
)创建了一条线let testLine = testBoard.create('line',[
[testfunction,0],[testfunction,1],]);
然后在内部创建两个JSXGraph点来定义线。现在,当删除该行时,JSXGraph不会自动删除这两个内部点。解决方法是手动删除以下两点:
document.getElementById('remove').addEventListener('click',()=>{
testBoard.removeObject([
testLine.point1,testLine.point2,testLine,testPoint
]);
});
在https://jsfiddle.net/61ny8hm7/1/上查看
最良好的祝愿, 阿尔弗雷德