单击按钮后 JavaScript 不起作用

单击按钮后 JavaScript 不起作用

我有这个非常简单的 LaTeX 文件,它使用 media9 包插入 3D 对象。我想使用 Javascript 为 3D 对象的某些部分制作动画,最好是单击按钮即可。

我的问题是,当我通过 TimeEventHandler 或 MouseClickEvent 调用 Javascript 函数时,动画效果很好。但是当我创建一个\mediabutton来调用同一个函数时,我得到了一个错误。

以下是我的 LaTeX 代码的一部分(其中animate()是在 animation.js 中定义的函数):

\includemedia[
    label=model,
    activate=pageopen,
    add3Djscript=animation.js
]{}{model.u3d}

\mediabutton[
    jsaction=model:{annotRM[`model'].context3D.animate();}
]{\fbox{Play Animation}}

这是我的 JS 代码的最简单版本,但仍然失败:

cube=scene.meshes.getByName("Cube");

function animate(){
    cube.visible=false;
}

在调试时,我发现 JS 中出现以下错误,但我不知道原因。

SyntaxError: illegal character
1:Field:Mouse Up

我甚至尝试使用 media9 的示例代码和文件,尽管它们应该可以完美运行,但我还是遇到了同样的错误。(该错误仅发生在使用\mediabuttonJavascript 的示例文件中;其他示例可以正常运行。)

我一直在试图弄清楚这是 LaTeX 还是 JS 的问题,并且看到只要我不使用按钮,JS 代码就能完美运行,所以我想我会尝试在这里找到任何解决方案。

似乎没有人在将 JS 函数附加到媒体按钮时遇到任何问题。任何见解都将不胜感激。

如果重要的话,我会使用 MikTeX pdflatex。

答案1

为了播放嵌入在 U3D 文件中的关键帧动画,animation.js定义一个添加到 3D对象的TimeEventHandler对象。要暂停动画,必须再次将其从对象中移除。这可以使用以下方法实现:"myTimer"runtimeTimeEventHandlerruntime\mediabutton

\mediabutton[
  jsaction=model:{
    cntxt3d=annotRM['model'].context3D;
    cntxt3d.runtime.removeEventHandler(cntxt3d.myTimer);
  }
]{\fbox{Pause Animation}}
\mediabutton[
  jsaction=model:{
    cntxt3d=annotRM['model'].context3D;
    cntxt3d.runtime.addEventHandler(cntxt3d.myTimer);
  }
]{\fbox{Play Animation}}

相关内容