我有这个非常简单的 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 的示例代码和文件,尽管它们应该可以完美运行,但我还是遇到了同样的错误。(该错误仅发生在使用\mediabutton
Javascript 的示例文件中;其他示例可以正常运行。)
我一直在试图弄清楚这是 LaTeX 还是 JS 的问题,并且看到只要我不使用按钮,JS 代码就能完美运行,所以我想我会尝试在这里找到任何解决方案。
似乎没有人在将 JS 函数附加到媒体按钮时遇到任何问题。任何见解都将不胜感激。
如果重要的话,我会使用 MikTeX pdflatex。
答案1
为了播放嵌入在 U3D 文件中的关键帧动画,animation.js
定义一个添加到 3D对象的TimeEventHandler
对象。要暂停动画,必须再次将其从对象中移除。这可以使用以下方法实现:"myTimer"
runtime
TimeEventHandler
runtime
\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}}