Hi Richard, thanks for this example. I tried it and voilĂ ! Willi Richard Hirsch wrote:
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
_______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context