Richard Rascher-Friesenhausen asked
> So again. Is it possible to write something like the above animation
packages
> in ConTeXt (as a module)?
If Acrobat can display them, ConTeXt can generate them.
Here is a simple example.
\setupoutput [pdf]
\setupcolors [state=start]
\setupinteraction [state=start]
\setuppapersize [S6][S6]
%% this is just code to get something to animate
\startMPinclusions
picture thearrow, thestar;
drawarrow (origin--up) scaled 10mm
withpen pencircle scaled 3pt
withcolor .9 red;
setbounds currentpicture to (fullcircle scaled 22mm);
thearrow:= currentpicture scaled 5;
currentpicture:= nullpicture;
for angle=0 step 72 until 359:
draw thearrow rotated angle;
endfor
thestar:= currentpicture;
currentpicture:= nullpicture
\stopMPinclusions
\setupMPvariables [drawstar] [rotation=0]
\startuniqueMPgraphic{drawstar}{rotation}
draw thestar rotated \MPvar{rotation};
\stopuniqueMPgraphic
%% now we define some symbols (the frames of the animated sequence)
\def\definestarsymbol#1{%
\definesymbol [star #1] [\uniqueMPgraphic{drawstar}{rotation=#1}]}
\definestarsymbol{0}
\definestarsymbol{6}
\definestarsymbol{12}
\definestarsymbol{18}
\definestarsymbol{24}
\definestarsymbol{30}
\definestarsymbol{36}
\definestarsymbol{42}
\definestarsymbol{48}
\definestarsymbol{54}
\definestarsymbol{60}
\definestarsymbol{66}
%% the frames are put into a fieldstack
\definefieldstack [vortex]
[star 0, star 6, star 12, star 18, star 24, star 30,
star 36, star 42, star 48, star 54, star 60, star 66]
%% and this is the JavaScrip code that displays the frames one by one
\startJSpreamble MyField used later
var current = 1;
var delay = 200; % 200 milliseconds
var timer;
var running = false; % animation currently not running
function Advance_Angle ( ) {
this.getField("vortex:"+current).value = "Off";
if (++current > 12) % number of frames
{ current = 1; } % loop through frames
this.getField("vortex:"+current).value = "On";
}
\stopJSpreamble
%% we want to control the starting and stopping of the animation
\startJScode Rotate_Star uses MyField
if (running) {
try { app.clearInterval(timer); } catch(except) {};
running = false;
}
else {
timer = app.setInterval("Advance_Angle()",delay);
running = true;
}
\stopJScode
\starttext
\placefigure [here] [fig:animation]
{A simple \MetaFun\ animation,
click \goto {here} [JS(Rotate_Star)] to start (or stop)}
{\fieldstack [vortex]}
\stoptext
Of course you would want to put the symbol definitions and the
definition of the fieldstack into a loop. I tried
%% \newcount\angle
%% \angle=0%\zerocount
%% \dorecurse{12} {%
%% \number\angle:\qquad
%% \definestarsymbol{\the\angle}
%% \symbol[star \number\angle]\par
%% \advance\angle by 6}
and did get the single symbols. I wasn't successful however in putting
the symbol list of the fieldstack definition into a loop. Perhaps the
ConTeXt gurus can help.
Best regards,
Richard