使用 JavaScript 时,时间轴(动画包)闪烁至第一个透明度

使用 JavaScript 时,时间轴(动画包)闪烁至第一个透明度

这在某种程度上是对问题。

我正在使用一些tikz绘图,我想使用该animate包对其进行动画处理。动画应该从头开始,一直运行到动画结束,然后跳转到中间的某个帧并循环播放最后半帧。

请考虑一下我根据上述问题构建的以下 MWE:

\documentclass{article} 
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{animate}

% mytimeline.txt
\begin{filecontents*}{mytimeline.txt}
%-------------------------------------------------------------------  
%[*]:[new frame rate]:[<list of transparencies>][:<JavaScript>]  
% `*' in the first column pauses animation
%-------------------------------------------------------------------  
::0
::1
::2
::3
::4 
::5 
::6 
::7 
::8 
::9
::9:  anim.myAnim.frameNum=5; %After last frame, return to frame #5
\end{filecontents*} 

\begin{document} 
\begin{center} 
\begin{animateinline}[ 
  label=myAnim, 
  autoplay, loop,  
  width=\linewidth, 
  begin={\begin{minipage}[c][5cm][c]{5cm}}, 
  end={\end{minipage}}, 
  timeline=mytimeline.txt
]{4}% 
%create "transparencies", to be arranged according to timeline 
  \multiframe{10}{Number=0+1}{% 
    \begin{tikzpicture}
      \foreach \i in {0.1, 0.2, ..., 180} 
        \draw (\i:2) -- (\i+180:2);
      \node[white, font=\Huge] at (0,0) {\Number};
    \end{tikzpicture}
  } 
\end{animateinline}% 
\end{center} 
\end{document}

timeline.txt动画从头开始然后循环最后 5 帧。

这里的动画本身只绘制了帧号和几百个笔画来减慢显示速度,这样你就可以看到我看到的真实的东西:到达最后一帧后,动画会短暂显示第一帧,然后才按照命令跳转到第 5 帧。

我怎样才能制作动画不是放映错误的幻灯片?

记录如下:我正在使用最新的 pdflatex 和 Adob​​e Reader DC。

答案1

帧图形(1800 条径向线模拟实心圆)对 AR 的渲染引擎要求很高。这可能会导致 的执行anim.myAnim.frameNum=5和 循环触发器之间发生竞争。如果后者发生在帧数设置之前,动画会短暂跳回#0

如果我们在时间线末尾再次重复最后一帧,将循环事件推到强制跳转的后面,就可以避免这种情况:

\documentclass{article} 
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{animate}

% mytimeline.txt
\begin{filecontents*}{mytimeline.txt}
%-------------------------------------------------------------------  
%[*]:[new frame rate]:[<list of transparencies>][:<JavaScript>]  
% `*' in the first column pauses animation
%-------------------------------------------------------------------  
::0
::1
::2
::3
::4 
::5 
::6 
::7 
::8 
::9
::9:  anim.myAnim.frameNum=5; %After last frame, return to frame #5
::9   % added
\end{filecontents*} 

\begin{document} 
\begin{center} 
\begin{animateinline}[ 
  label=myAnim, 
  autoplay, loop,  
  width=\linewidth, 
  begin={\begin{minipage}[c][5cm][c]{5cm}}, 
  end={\end{minipage}}, 
  timeline=mytimeline.txt
]{4}% 
%create "transparencies", to be arranged according to timeline 
  \multiframe{10}{Number=0+1}{% 
    \begin{tikzpicture}
      \foreach \i in {0.1, 0.2, ..., 180} 
        \draw (\i:2) -- (\i+180:2);
      \node[white, font=\Huge] at (0,0) {\Number};
    \end{tikzpicture}
  } 
\end{animateinline}% 
\end{center} 
\end{document}

相同的视觉效果和动画性能,但节省了编译时间和 PDF 文件大小(“圆圈”仅排版一次):

\documentclass{article} 
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{animate}

% mytimeline.txt
\begin{filecontents*}{mytimeline.txt}
%-------------------------------------------------------------------  
%[*]:[new frame rate]:[<list of transparencies>][:<JavaScript>]  
% `*' in the first column pauses animation
%-------------------------------------------------------------------  
::0x0,1
::2
::3
::4 
::5
::6 
::7 
::8 
::9
::10
::10: anim.myAnim.frameNum=5; %After last frame, return to frame #5
::10
\end{filecontents*} 

\begin{document} 
\begin{center} 
\begin{animateinline}[ 
  label=myAnim, 
  autoplay, loop,
  width=\linewidth, 
  begin={\begin{minipage}[c][5cm][c]{5cm}}, 
  end={\end{minipage}}, 
  timeline=mytimeline.txt
]{4}% 
  %create "transparencies", to be arranged according to timeline 
  \begin{tikzpicture} % black "circle"
    \foreach \i in {0.1, 0.2, ..., 180} \draw (\i:2) -- (\i+180:2);
  \end{tikzpicture}
  \newframe
  \multiframe{10}{Number=0+1}{% numbers, to be overlaid
    \begin{tikzpicture}
      \useasboundingbox (-2,-2) rectangle (2,2);
      \node[white, font=\Huge] at (0,0) {\Number};
    \end{tikzpicture}
  } 
\end{animateinline}% 
\end{center} 
\end{document}

相关内容