第一种方式

第一种方式

我使用 tikz 和 animate 包创建了一个漂亮的动画,我以回文形式播放它。它类似于下面的示例,尽管这当然比我的真实文档更简单。问题是我需要它暂停一下在动画的开始和结束时,好像第一帧和最后一帧的持续时间比其他帧更长。有办法吗?

我有一个想法,不是有 11 帧,\rTheta 从 0 到 10,而是有 31 帧,\rTheta 从 -10 到 20。然后可以有一个条件,将 \rTheta 的负值设置为 0,将大于 10 的值设置为 10。这将产生我想要的效果。不确定这是否可行,或者是否有更好的方法。

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{animate}
\begin{document}
\begin{frame}
$
\begin{animateinline}[autoplay,palindrome]{10}
\multiframe{11}{rTheta=0+.1}{
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (10,0) {b};
\node (c) at ($(0,0)!\rTheta!(10,0)$) {$X$};
\end{tikzpicture}
}
\end{animateinline}
$
\end{frame}
\end{document}

答案1

您可以使用环境timeline的选项animateinline。从指定的文件中,您可以描述何时使用animateinline环境的每个帧、重新排序或重复其中一些,甚至多次更改帧速率。

这里有两种方法可以添加所需的暂停。第二种方法应该更有效率,因为ab节点只在开始时绘制一次。

第一种方式

\begin{filecontents*}{timeline.txt}
:1:0   % change framerate to 1 fps
:10:1  % change framerate to 10 fps
::2
::3
::4
::5
::6
::7
::8
::9
:1:10  % change framerate to 1 fps
\end{filecontents*}

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{animate}

\begin{document}
\begin{frame}
\begin{animateinline}[autoplay,palindrome,timeline=timeline.txt]{10}
\multiframe{11}{rTheta=0+.1}{
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (10,0) {b};
\node at ($(a)!\rTheta!(b)$) {$X$};
\end{tikzpicture}
}
\end{animateinline}
\end{frame}
\end{document}

第二种方式

\begin{filecontents*}{timeline2.txt}
:1:0x0,1  %  1 fps; use frame 0 as persistent background
:10:2     % 10 fps
::3
::4
::5
::6
::7
::8
::9
::10
:1:11     %  1 fps
\end{filecontents*}

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{animate}

\begin{document}

\begin{frame}
\begin{animateinline}[autoplay,palindrome,timeline=timeline2.txt]{10}
  \begin{tikzpicture}
    \node (a) at (0,0) {a};
    \node (b) at (10,0) {b};
  \end{tikzpicture}%
  %
  \newframe
  %
  \multiframe{11}{rTheta=0+.1}{%
    \begin{tikzpicture}
      \path (a) -- (b);    % establish bounding box & size
      \node at ($(a)!\rTheta!(b)$) {$X$};
    \end{tikzpicture}%
  }%
\end{animateinline}
\end{frame}

\end{document}

在此处输入图片描述

答案2

该命令\newframe接受一个可选参数,允许改变动画中的帧速率:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{animate}

\newcommand\animframe[1]{%
  \begin{tikzpicture}[every node/.style={anchor=base}]
    \path coordinate (a) at (0,0) coordinate (b) at (10,0); 
    \path[use as bounding box] node at (a) {\phantom{$X$}} node at (b) {\phantom{$X$}}; 
    \path node at (a) {a} node at (b) {b} node at ($(a)!#1!(b)$) {$X$};
  \end{tikzpicture}%
}

\begin{document}
\begin{frame}
\begin{animateinline}[autoplay,palindrome]{1} % start with low frame rate
  \animframe{0.0}
\newframe[10] % higher frame rate for main part 
  \multiframe{9}{rTheta=0.1+.1}{\animframe{\rTheta}}
\newframe[1]  % end with low frame rate
  \animframe{1.0}
\end{animateinline}
\end{frame}
\end{document}

相关内容