这在某种程度上是对这问题。
我正在使用一些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 和 Adobe 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}