GeoGebra Apps API
本文翻译来源链接:
https://geogebra.github.io/docs/reference/en/GeoGebra_Apps_API/
示例
以下示例展示了GeoGebra Apps API的实际应用场景:
- 通过按钮显示和隐藏对象
- 保存和加载状态
- 监听更新、添加、删除事件
方括号内的参数可以省略。
创建对象
Method Signature | Since | 描述 |
---|---|---|
boolean evalCommand(String cmdString) | 3.0 | 执行给定字符串命令,效果等同于在GeoGebra输入栏中输入该命令。返回命令是否执行成功。从GeoGebra 3.2开始,可以通过用\n 分隔来同时传递多个命令。注意:必须使用英文命令名称。 |
boolean evalLaTex(String input) | 5.0 | 将LaTeX字符串解析为几何构造元素。支持基本语法如x^{2} 或\frac 。 |
String evalCommandGetLabels(String cmdString) | 5.0 | 功能同evalCommand(),但返回值为字符串,包含所创建对象的标签列表(以逗号分隔),例如"A,B,C" 。 |
String evalCommandCAS(String string) | 3.2 | 将字符串传递给GeoGebra的CAS系统,并返回结果字符串。 |
void insertEmbed(String type, String uri) | 6.0 (Notes) | 插入具有指定类型和URI的嵌入式元素。类型和URI随后用于获取嵌入元素的HTML代码,参见registerEmbedResolver。 |
设置对象状态
通用方法
Method Signature | Since | 描述 |
---|---|---|
void deleteObject(String objName) | 2.7 | 删除指定名称的对象。 |
void setAuxiliary(geo, true/false) | 5.0 | 设置对象geo 是否为辅助对象。 |
void setValue(String objName, double value) | 3.2 | 设置指定名称对象的数值。注意:若对象为布尔型,1表示true ,其他值表示false ;其他对象类型无效。 |
void setTextValue(String objName, String value) | 3.2 | 设置指定名称对象的文本值。其他对象类型无效。 |
void setListValue(String objName, int i, double value) | 5.0 | 将列表中第i 个元素的值设为value 。 |
void setCoords(String objName, double x, double y)void setCoords(String objName, double x, double y, double z) | 3.0 5.0 | 设置指定名称对象的坐标。注意:若对象非点、向量、直线或绝对定位对象(文本、按钮、复选框、输入框),则无效。 |
void setCaption(String objName, String caption) | 5.0 | 设置指定名称对象的标题。 |
void setColor(String objName, int red, int green, int blue) | 2.7 | 设置指定名称对象的RGB颜色。 |
void setVisible(String objName, boolean visible) | 2.7 | 在绘图区显示或隐藏指定名称的对象。 |
void setLabelVisible(String objName, boolean visible) | 3.0 | 在绘图区显示或隐藏指定名称对象的标签。 |
void setLabelStyle(String objName, int style) | 3.0 | 设置指定名称对象的标签样式。可选样式:NAME = 0 、NAME_VALUE = 1 、VALUE = 2 (GeoGebra 3.2起支持CAPTION = 3 )。 |
void setFixed(String objName, boolean fixed, boolean selectionAllowed) | 3.0 | 设置指定名称对象的"固定"和"允许选择"状态。注意:固定对象不可修改。 |
void setTrace(String objName, boolean flag) | 3.0 | 开启或关闭指定名称对象的轨迹追踪。 |
boolean renameObject(String oldObjName, String newObjName) | 3.2 | 将oldObjName 重命名为newObjName 。返回是否成功。 |
void setLayer(String objName, int layer) | 3.2 | 设置对象的图层。 |
void setLayerVisible(int layer, boolean visible) | 3.2 | 显示或隐藏指定图层的所有对象。 |
void setLineStyle(String objName, int style) | 3.2 | 设置对象的线型(0到4)。 |
void setLineThickness(String objName, int thickness) | 3.2 | 设置对象的线宽(1到13,-1为默认)。 |
void setPointStyle(String objName, int style) | 3.2 | 设置点的样式(-1默认,0实心圆,1十字,2空心圆,3加号,4实心菱形,5空心菱形,6北向三角,7南向三角,8东向三角,9西向三角)。完整列表参见SetPointStyle命令。 |
void setPointSize(String objName, int size) | 3.2 | 设置点的大小(1到9)。 |
void setDisplayStyle(String objName, String style) | 5.0 | 设置对象的显示样式。可选值:“parametric”(参数式)、“explicit”(显式)、“implicit”(隐式)、“specific”(特定)。 |
void setFilling(String objName, double filling) | 3.2 | 设置对象的填充透明度(0到1)。 |
String getPNGBase64(double exportScale, boolean transparent, double DPI) | 4.0 | 将当前绘图区导出为Base64编码的PNG字符串。例如:var str = ggbApplet.getPNGBase64(1, true, 72); 。DPI设置较慢,若无需要可设为undefined 。 |
void exportSVG(String filename) 或 void exportSVG(function callback) | HTML5 | 将当前绘图区渲染为SVG,可下载为指定文件或通过回调函数返回。若为3D视图则返回null 。示例:ggbApplet.exportSVG(svg => console.log("data:image/svg+xml;utf8," + encodeURIComponent(svg))); 。Classic 5兼容性请使用ExportImage("type", "svg", "filename", "foo.svg") 。 |
void exportPDF(double scale, String filename, String sliderLabel) 或 void exportPDF(double scale, function callback, String sliderLabel) | HTML5 | 将当前绘图区渲染为PDF,可下载为指定文件或通过回调函数返回。示例:ggbApplet.exportPDF(1, pdf => console.log(pdf)); 。Classic 5兼容性请使用ExportImage("type", "pdf", "filename", "foo.pdf") 。 |
void getScreenshotBase64(function callback) | 5.0 | 获取整个小程序的截图(PNG格式),以Base64编码字符串通过回调返回。示例:ggbApplet.getScreenshotBase64(function(url){window.open("data:image/png;base64,"+url);}); 。仅内部使用,可能不兼容所有浏览器。 |
boolean writePNGtoFile(String filename, double exportScale, boolean transparent, double DPI) | 4.0 | 将当前绘图区导出为PNG文件。DPI设置较慢,若无需要可设为undefined 。示例:var success = ggbApplet.writePNGtoFile("myImage.png", 1, false, 72); 。 |
boolean isIndependent(String objName) | 4.0 | 检查objName 是否为独立对象。 |
boolean isMoveable(String objName) | 4.0 | 检查objName 是否可移动。 |
void showAllObjects() | 5.0 | 调整绘图区范围,使所有可见对象显示在屏幕内。 |
void registerEmbedResolver(String type, Function callback) | 6.0 | 为特定嵌入元素类型注册解析函数。该函数接收嵌入ID并返回解析为HTML字符串的Promise。 |
自动动画功能
Method Signature | Since | 描述 |
---|---|---|
void setAnimating(String objName, boolean animate) | 3.2 | 设置对象是否启用动画(需配合startAnimation()启动动画) |
void setAnimationSpeed(String objName, double speed) | 3.2 | 设置对象的动画速度 |
void startAnimation() | 3.2 | 启动所有已设置动画标志的对象的自动动画(参见setAnimating()) |
void stopAnimation() | 3.2 | 停止所有已设置动画标志的对象的动画(参见setAnimating()) |
boolean isAnimationRunning() | 3.2 | 返回当前是否正在运行自动动画 |
获取对象状态
Method Signature | Since | 描述 |
---|---|---|
double getXcoord(String objName) | 2.7 | 返回指定名称对象的笛卡尔x坐标(若非点或向量则返回0) |
double getYcoord(String objName) | 2.7 | 返回指定名称对象的笛卡尔y坐标(若非点或向量则返回0) |
double getZcoord(String objName) | 5.0 | 返回指定名称对象的笛卡尔z坐标(若非点或向量则返回0) |
double getValue(String objName) | 3.2 | 返回指定名称对象的数值(如线段长度/多边形面积)。布尔对象返回1(true)或0(false) |
double getListValue(String objName, Integer index) | 5.0 | 返回列表中指定索引位置对象的数值。布尔对象返回1(true)或0(false) |
String getColor(String objName) | 2.7 | 以十六进制字符串返回对象颜色(如红色为"#FF0000"),始终大写且带#前缀 |
boolean getVisible(String objName) | 3.2 | 返回对象在绘图区是否可见(对象不存在时返回false) |
boolean getVisible(String objName, int view) | 4.2 | 返回对象在指定视图(1或2)中是否可见(对象不存在时返回false) |
String getValueString(String objName [, boolean useLocalizedInput = true]) | 2.7 | 返回对象的字符串值。useLocalizedInput为false时返回英文命令,否则返回当前界面语言(本地化用圆括号,非本地化用方括号)。注意:需强制转换为JavaScript字符串(如var s = getValueString(“text1”) + “”) |
String getDefinitionString(String objName) | 2.7 | 以当前语言返回对象的定义字符串 |
String getCommandString(String objName [, boolean useLocalizedInput]) | 5.0 | 返回对象的命令字符串。useLocalizedInput为false时返回英文命令,否则返回当前界面语言(本地化用圆括号,非本地化用方括号) |
String getLaTeXString(String objName) | 5.0 | 以LaTeX语法返回对象值 |
String getLaTeXBase64(String objName, boolean value) | 5.0 | 返回LaTeX渲染对象的Base64编码PNG图片。value=false时显示定义,value=true时显示值 |
String getObjectType(String objName) | 2.7 | 返回对象类型字符串(如"point"/“line”/"circle"等) |
boolean exists(String objName) | 2.7 | 返回构造中是否存在该名称对象 |
boolean isDefined(String objName) | 2.7 | 返回对象当前值是否有效 |
String [] getAllObjectNames([String type]) | 2.7 | 返回构造中所有对象名称数组。type参数可筛选特定类型对象 |
int getObjectNumber() | 3.0 | 返回构造中的对象总数 |
int getCASObjectNumber() | 3.0 | 返回CAS中非空单元格数量 |
String getObjectName(int i) | 3.0 | 返回构造中第n个对象的名称 |
String getLayer(String objName) | 3.2 | 返回对象所在图层 |
int getLineStyle(String objName) | 3.2 | 获取对象线型(0到4) |
int getLineThickness(String objName) | 3.2 | 获取线宽(1到13) |
int getPointStyle(String objName) | 3.2 | 获取点样式(-1默认,0实心圆,1空心圆,2十字,3加号,4实心菱形,5空心菱形,6北向三角,7南向三角,8东向三角,9西向三角) |
int getPointSize(String objName) | 3.2 | 获取点大小(1到9) |
double getFilling(String objName) | 3.2 | 获取对象填充透明度(0到1) |
getCaption(String objectName, boolean substitutePlaceholders) | 5.0 | 返回对象标题。substitutePlaceholders参数控制是否替换占位符(%n/%v等) |
getLabelStyle(String objectName) | 5.0 | 返回对象标签类型(参见setLabelStyle取值) |
getLabelVisible() | 5.0 | isInteractive(String objName) |
视图与交互控制
Method Signature | Since | 描述 |
---|---|---|
void setMode(int mode) | 2.7 | 设置绘图区鼠标模式(工具),参见工具栏参考及"showToolBar"/"customToolBar"参数 |
int getMode() | 5.0 | 获取当前鼠标模式(工具),详见工具栏参考 |
void openFile(String strURL) | 2.7 (仅Java) | 通过绝对/相对URL打开构造文件 |
void reset() | 2.7 | 重置为初始构造(filename参数指定) |
void newConstruction() | 2.7 | 清空所有构造对象 |
void refreshViews() | 2.7 | 刷新所有视图(会清除绘图区所有轨迹) |
void setOnTheFlyPointCreationActive(boolean flag) | 3.2 | 启用(true)/禁用(false)绘图区实时点创建功能(禁用后可避免工具意外创建点) |
void setPointCapture(view, mode) | 5.0 | 设置点捕捉模式:view取值1(2D视图)/2(第二视图)/-1(3D);mode取值0(无捕捉)/1(吸附网格)/2(固定网格)/3(自动) |
void setRounding(string round) | 5.0 | 设置舍入规则(如"10s"表示10位有效数字,"5"表示5位小数) |
void hideCursorWhenDragging(boolean flag) | 3.2 | 拖动对象时隐藏(true)/显示(false)鼠标指针 |
void setRepaintingActive(boolean flag) | 2.7 | 启用(true)/禁用(false)视图重绘(批量操作时建议禁用) |
void setErrorDialogsActive(boolean flag) | 3.0 | 启用(true)/禁用(false)错误对话框显示 |
坐标系设置
Method Signature | Since | 描述 |
---|---|---|
void setCoordSystem(double xmin, xmax, ymin, ymax) | 3.0 | 设置2D坐标系范围 |
void setCoordSystem(xmin, xmax, ymin, ymax, zmin, zmax, yVertical) | 5.0 | 设置3D坐标系范围(yVertical控制y轴是否垂直) |
void setAxesVisible(boolean xAxis, yAxis) | 3.0 | 显示/隐藏x轴和y轴 |
void setAxesVisible(viewNumber, xAxis, yAxis, zAxis) | 5.0 | 设置指定视图的坐标轴可见性(示例:ggbApplet.setAxesVisible(3, false, true, true)) |
void setUndoPoint() | 3.2 | 设置撤销点(配合evalCommand使用) |
void setAxisLabels(viewNumber, xAxis, yAxis, zAxis) | 5.0 | 设置坐标轴标签(示例:ggbApplet.setAxisLabels(3,“长”,“宽”,“面积”)) |
void setAxisSteps(viewNumber, xAxis, yAxis, zAxis) | 5.0 | 设置坐标轴刻度间隔(示例:ggbApplet.setAxisSteps(3, 2,1,0.5)) |
void setAxisUnits(viewNumber, xAxis, yAxis, zAxis) | 5.0 | 设置坐标轴单位(示例:ggbApplet.setAxisUnits(3, “cm”,“cm”,“cm²”)) |
网格与视图控制
Method Signature | Since | 描述 |
---|---|---|
void setGridVisible(boolean flag) | 3.0 | 显示/隐藏坐标网格 |
void setGridVisible(viewNumber, flag) | 5.0 | 设置指定视图的网格可见性 |
getGridVisible(int viewNumber) | 5.0 | 返回指定视图网格是否可见(缺省viewNumber时返回第一视图状态) |
getPerspectiveXML() | 5.0 | 获取当前透视模式的XML表示 |
undo() | 5.0 | 撤销上一步操作 |
redo() | 5.0 | 重做已撤销操作 |
界面元素控制
Method Signature | Since | 描述 |
---|---|---|
showToolBar(boolean show) | HTML5 | 显示/隐藏工具栏 |
setCustomToolBar(String toolbar) | 5.0 | 自定义工具栏布局(参见工具栏参考) |
addCustomTool(iconURL, name, category, callback) | 6.0 (仅Notes) | 添加自定义工具到Notes工具箱(iconURL支持https:/data:协议,category默认为"more") |
showMenuBar(boolean show) | HTML5 | 显示/隐藏菜单栏 |
showAlgebraInput(boolean show) | HTML5 | 显示/隐藏输入栏 |
showResetIcon(boolean show) | HTML5 | 显示/隐藏重置图标 |
交互功能开关
Method Signature | Since | 描述 |
---|---|---|
enableRightClick(boolean enable) | 5.0 | 启用/禁用右键功能 |
enableLabelDrags(boolean enable) | 5.0 | 启用/禁用标签拖动 |
enableShiftDragZoom(boolean enable) | 5.0 | 启用/禁用Shift+拖动缩放 |
enableCAS(boolean enable) | 5.0 | 启用/禁用CAS功能 |
enable3D(boolean enable) | 5.0 | 启用/禁用3D视图 |
视图与布局
Method Signature | Since | 描述 |
---|---|---|
void setPerspective(string perspective) | 5.0 | 设置视图布局(参见SetPerspective命令) |
setWidth(int width) | 5.0 (HTML5) | 设置小程序宽度(像素) |
setHeight(int height) | 5.0 (HTML5) | 设置小程序高度(像素) |
setSize(width, height) | 5.0 (HTML5) | 同时设置宽高(像素) |
recalculateEnvironments() | 5.0 (HTML5) | CSS缩放后更新小程序 |
高级配置
Method Signature | Since | 描述 |
---|---|---|
getEditorState() | 5.0 (HTML5) | 获取代数视图编辑器状态(返回含content/caret等字段的JSON) |
setEditorState(Object state) | 5.0 (HTML5) | 设置编辑器状态(参数为含content/caret的JSON) |
getGraphicsOptions(viewId) | 5.0 (HTML5) | 获取指定视图的图形选项(返回含rightAngleStyle/gridColor等字段的JSON) |
setGraphicsOptions(viewId, options) | 5.0 (HTML5) | 设置图形选项(参数为含bgColor/axes等的JSON) |
setAlgebraOptions(options) | 5.0 (HTML5) | 设置代数视图选项(参数为含sortBy字段的JSON) |
事件监听器
Method Signature | Since | 描述 |
---|---|---|
void registerAddListener(JSFunction function) | 3.0 | 注册对象创建监听器。当构造中新建对象时,调用JS函数并传入新对象名称作为参数。 示例: ggbApplet.registerAddListener(myAddListenerFunction); 创建对象"A"时调用: myAddListenerFunction("A"); |
void unregisterAddListener(JSFunction function) | 3.0 | 移除已注册的对象创建监听器 |
void registerRemoveListener(JSFunction function) | 3.0 | 注册对象删除监听器。当对象被删除时调用JS函数并传入被删对象名称(清空构造时不触发单个对象删除事件)。 示例: ggbApplet.registerRemoveListener(myRemoveListenerFunction); 删除对象"A"时调用: myRemoveListenerFunction("A"); |
void unregisterRemoveListener(JSFunction function) | 3.0 | 移除已注册的对象删除监听器 |
void registerUpdateListener(JSFunction function) | 3.0 | 注册全局更新监听器。当任何对象更新时调用JS函数并传入对象名称(监听单个对象建议使用registerObjectUpdateListener)。 示例: ggbApplet.registerUpdateListener(myUpdateListenerFunction); 更新对象"A"时调用: myUpdateListenerFunction("A"); |
void unregisterUpdateListener(JSFunction function) | 3.0 | 移除已注册的全局更新监听器 |
void registerClickListener(JSFunction function) | 5.0 | 注册全局点击监听器。当点击任何对象时调用JS函数并传入对象名称(监听单个对象建议使用registerObjectClickListener) |
void unregisterClickListener(JSFunction function) | 3.0 | 移除已注册的全局点击监听器 |
void registerObjectUpdateListener(String objName, JSFunction function) | 3.0 | 注册指定对象更新监听器。当特定对象更新时调用JS函数(对象重命名后仍有效)。 示例: ggbApplet.registerObjectUpdateListener("A", myAupdateListenerFunction); 更新对象"A"时调用: myAupdateListenerFunction(); |
void unregisterObjectUpdateListener(String objName) | 3.0 | 移除指定对象的更新监听器 |
void registerObjectClickListener(String objName, JSFunction function) | 5.0 | 注册指定对象点击监听器。当点击特定对象时调用JS函数(对象重命名后仍有效)。 示例: ggbApplet.registerObjectClickListener("A", myAclickListenerFunction); 点击对象"A"时调用: myAclickListenerFunction(); |
void unregisterObjectClickListener(String objName) | 5.0 | 移除指定对象的点击监听器 |
void registerRenameListener(JSFunction function) | 3.0 | 注册重命名监听器。当对象重命名时调用JS函数并传入旧名称和新名称。 示例: ggbApplet.registerRenameListener(myRenameListenerFunction); 将"A"重命名为"B"时调用: myRenameListenerFunction("A", "B"); |
void unregisterRenameListener(String objName) | 3.0 | 移除已注册的重命名监听器 |
void registerClearListener(JSFunction function) | 3.0 | 注册构造清空监听器。当清空构造时调用JS函数(不传参数)。注意:清空构造时会自动移除所有更新监听器。 示例: ggbApplet.registerClearListener(myClearListenerFunction); 清空构造时调用: myClearListenerFunction(); |
void unregisterClearListener(JSFunction function) | 3.0 | 移除已注册的清空监听器 |
void registerStoreUndoListener(JSFunction function) | 4.4 | 注册撤销点创建监听器(无参数调用) |
void unregisterStoreUndoListener(JSFunction function) | 4.4 | 移除撤销点创建监听器 |
void registerClientListener(JSFunction function) | 5.0 | 注册通用客户端监听器。接收JSON格式事件,如:{type: "setMode", target:"", argument: "2"} 其中target为相关对象标签,argument为事件类型相关参数 |
void unregisterClientListener(JSFunction function) | 5.0 | 移除通用客户端监听器 |
客户端事件
(可通过registerClientListener方法监听的事件)
事件类型 | 属性 | 描述 |
---|---|---|
addMacro | argument: 宏名称 | 添加新宏时触发 |
addPolygon | - | 开始创建多边形时触发 |
addPolygonComplete | target: 多边形标签 | 多边形创建完成时触发 |
algebraPanelSelected | - | 代数侧边栏选项卡被选中时触发(图形/几何应用) |
deleteGeos | - | 删除多个对象时触发 |
deselect | target: 对象名称(单个对象)或null(取消全选) | 从选区移除一个或全部对象时触发 |
dragEnd | - | 鼠标拖动结束时触发 |
dropdownClosed | target: 下拉列表名称, index: 选中项索引(从0开始) | 下拉列表关闭时触发 |
dropdownItemFocused | target: 下拉列表名称, index: 聚焦项索引(从0开始) | 通过鼠标/键盘聚焦下拉列表项时触发 |
dropdownOpened | target: 下拉列表名称 | 下拉列表打开时触发 |
editorKeyTyped | - | 在编辑器(代数视图或独立计算器应用)中输入时触发 |
editorStart | target: 正在编辑的对象标签 | 聚焦到编辑器时触发 |
editorStop | target: 正在编辑的对象标签 | 离开编辑器时触发 |
export | argument: 包含导出格式的JSON数组 | 开始导出时触发 |
mouseDown | x: 鼠标x坐标, y: 鼠标y坐标 | 按下鼠标按钮时触发 |
movedGeos | argument: 对象标签数组 | 多个对象移动结束时触发 |
movingGeos | argument: 对象标签数组 | 多个对象正在移动时触发 |
openDialog | argument: 对话框ID | 打开对话框时触发(当前仅支持导出对话框) |
openMenu | argument: 子菜单ID | 打开主菜单或其子菜单时触发 |
pasteElms | argument: 粘贴对象的XML | 开始粘贴多个对象时触发 |
pasteElmsComplete | - | 粘贴多个对象完成时触发 |
perspectiveChange | - | 透视模式变更时触发(如打开/关闭视图) |
redo | - | 点击重做按钮时触发 |
relationTool | argument: 对象关系的HTML描述 | 使用关系工具时触发 |
removeMacro | argument: 自定义工具名称 | 移除自定义工具时触发 |
renameComplete | - | 对象重命名完成时触发(链式重命名情况) |
renameMacro | argument: 数组[旧名称, 新名称] | 自定义工具重命名时触发 |
select | target: 对象标签 | 将对象添加到选区时触发 |
setMode | argument: 模式编号(参见工具栏参考) | 应用模式变更时触发(如选择工具) |
showNavigationBar | argument: “true"或"false” | 导航栏可见性变更时触发 |
showStyleBar | argument: “true"或"false” | 样式栏可见性变更时触发 |
sidePanelClosed | - | 侧边面板关闭时触发(图形计算器中的代数视图所在面板) |
sidePanelOpened | - | 侧边面板打开时触发 |
tablePanelSelected | - | 数值表格面板被选中时触发 |
toolsPanelSelected | - | 工具面板被选中时触发 |
undo | - | 点击撤销按钮时触发 |
updateStyle | target: 对象标签 | 对象样式变更时触发 |
viewChanged2D | xZero: 点(0,0)的水平像素位置, yZero: 点(0,0)的垂直像素位置, xscale: 像素/水平单位比例, yscale: 像素/垂直单位比例, viewNo: 图形视图编号(1或2) | 2D视图缩放/平移导致尺寸变化时触发 |
viewChanged3D | 类似2D参数,例如xZero:0, yZero:0, scale:50, yscale:50, viewNo:512, zZero:-1.5, zscale:50, xAngle:-40, zAngle:24 | 3D视图缩放/平移导致尺寸变化时触发 |
GeoGebra文件格式操作
Method Signature | Since | 描述 |
---|---|---|
void evalXML(String xmlString) | 2.7 | 解析给定的XML字符串并修改当前构造(注意:解析前不会清空现有构造) |
void setXML(String xmlString) | 2.7 | 解析XML字符串并替换当前构造(会先清空构造),常用于加载构造文件 |
String getXML() | 2.7 | 返回当前构造的GeoGebra XML格式数据,可用于保存构造 |
String getXML(String objName) | 3.2 | 返回指定对象的XML字符串(仅包含<element> 标签) |
String getAlgorithmXML(String objName) | 3.2 | 返回依赖对象的父算法及其输出对象的XML字符串(自由对象返回空字符串) |
String getFileJSON() | 5.0 | 获取包含XML和图像的构造JSON对象 |
String setFileJSON(Object content) | 5.0 | 从包含XML和图像的JSON对象/字符串加载构造(格式参考getFileJSON) |
String getBase64() | - | 返回构造的Base64编码.ggb文件数据 |
String getBase64(function callback) | 4.2 | 异步获取Base64编码的.ggb文件,完成后通过回调函数返回结果(参数为Base64字符串) |
void setBase64(String [, function callback] ) | 4.0 | 从Base64编码的.ggb文件加载构造,可指定加载完成后执行的回调函数 |
关键说明:
- XML操作:支持增量更新(evalXML)和完全替换(setXML)两种模式
- 文件封装:支持标准.ggb文件(Base64编码)和带资源的JSON格式
- 异步处理:4.2+版本支持通过回调函数处理大型文件的异步加载/导出
其他功能
Method Signature | Since | 描述 |
---|---|---|
void debug(String string) | 3.2 | 将字符串输出到Java控制台(用于调试) |
String getVersion() | 5.0 | 返回当前GeoGebra版本号 |
void remove() | 5.0 | 移除小程序并释放内存资源 |
注:
- debug()方法主要用于开发调试阶段
- getVersion()可获取精确的版本信息用于兼容性检查
- remove()会彻底销毁applet实例,适用于动态页面场景
获取API对象的方法
传统方式(使用deployggb.js)
当通过deployggb.js
加载GeoGebra时,可通过appletOnLoad
回调参数获取API对象:
const ggb = new GGBApplet({
appletOnLoad(ggbApi) { // ggbApi即为应用API对象
// 在此使用API
}
});
ggb.inject(document.body);
兼容性说明:
- 默认情况下API对象也会绑定到全局变量
ggbApplet
- 可通过
new GGBApplet()
的id
参数覆盖全局变量名 - 若页面有多个GeoGebra应用,
ggbApplet
始终指向最后激活的应用API,建议显式设置id
或避免使用全局变量
ES6模块方式
可通过math-apps
模块以ES6规范注入应用:
<script type="module">
import {mathApps} from 'https://www.geogebra.org/apps/web3d/web3d.nocache.mjs';
mathApps.create({
'width':'800',
'height':'600',
'showAlgebraInput': 'true',
'material_id':'MJWHp9en'
}).inject(document.querySelector("#applet1"));
</script>
<div id="applet1"></div>
API调用示例:
mathApps.create({'appName':'graphing'})
.inject(document.querySelector("#plot"))
.getAPI().then(api => api.evalCommand('f(x)=sin(x)'));
关键点总结
- 传统方式适合直接脚本引入,需注意全局变量冲突
- ES6模块更适合现代前端开发,支持Promise链式调用
- 两种方式均支持完整API功能,包括图形操作、事件监听等