将 .swf 与 media9 连接起来

将 .swf 与 media9 连接起来

我发现可以调用外部javascript 在浏览器中使用我的交互式.swf文档外部接口由 Adob​​e 提供。这意味着,例如,通过单击按钮,我可以触发javascript命令(是的,我知道media9媒体按钮。)但是,这在 LaTeX 生成的文件中似乎是不可能的.pdf,因为只能导入.swf文档本身没有附加的 js 命令。

如果不是这样,我也可以将其连接到其他交互式图形.swfmedia9

是否有解决方法或其他可能性来实现这一点?

编辑:让我们添加一个例子:连接hslider来自例如 media9。

编辑:扩展该示例:

这是滑块mxml

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                initialize="init();">

    <mx:Script><![CDATA[

        public function change():void {                
            flash.external.ExternalInterface.call("anim[’my_anim’].frameNum = 10","");
        }

        ]]></mx:Script>

    <mx:HSlider id="aSlider" width="100%"
                minimum="0.1" maximum="3" value="0.1"
                dataTipPlacement="top"
                snapInterval="0.01" tickInterval="0"
                labels="[a=0.1,3]"
                allowTrackClick="true"
                liveDragging="true"
                change="change();"/>
</mx:Application>

如您所见,为了简单起见,只需将frameNum另一个动画my_anim(使用包创建animation)的 设置为10。但是我可以将这个 .swf 包含在 media9 中而没有任何问题,但滑动时没有响应。

我所做的事情可能有些荒谬,但是我的意图现在应该很清楚了。

答案1

本示例演示了使用 Flash 的外部接口。嵌入的 Flash 应用程序slider.swf是一个简单的滑块,可以改变动画对象的frameNum属性。

\documentclass{article}

\usepackage{animate,media9}

\begin{document}
\begin{animateinline}[label=my_anim,step]{1}
\multiframe{10}{i=0+1}{
  \fbox{\Huge\i}
}
\end{animateinline}

\includemedia[activate=pageopen,width=0.5\linewidth,height=12ex]{}{slider.swf}
\end{document}

预编译的 Flash 应用程序可以在这里下载:https://agrahn.gitlab.io/swf/slider.swf

它的源文件slider.mxml

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:Script><![CDATA[
    public function change():void {                
      flash.external.ExternalInterface.call("eval", "anim.my_anim.frameNum = "+String(int(aSlider.value)));
    }
  ]]></mx:Script>

  <mx:HSlider id="aSlider" width="100%"
    minimum="0" maximum="9" value="0"
    snapInterval="1" tickInterval="1"
    labels="[0,9]"
    allowTrackClick="true"
    liveDragging="true"
    change="change();"
  />
</mx:Application>

使用 Flex (flex.apache.org) 编译为 SWF

mxmlc -strict -warnings -compiler.as3 -static-link-runtime-shared-libraries -compiler.optimize -keep-generated-actionscript slider.mxml

相关内容