| Re: Widgets and Animation Loops in IDL 5.0 [message #16467 is a reply to message #16387] |
Mon, 26 July 1999 00:00  |
Mark Hadfield
Messages: 783 Registered: May 1995
|
Senior Member |
|
|
<drphys@my-deja.com> wrote in message news:7na6kq$q9b$1@nnrp1.deja.com...
> Hi,
> I am using IDL 5.0 on a DEC Alpha. I am animating a 3D plot of a
> particle trajectory by incrementing the "az" variable and then
> replotting in a loop. I decided to add widgets to control the speed of
> rotation and the angle about the x axis "ax". I have found this to be
> unworkable so far because once the code enters the loop the widgets do
> not issue events, so my event handlers do not get called. This was
> easily fixed by using widget_control commands inside the loop and using
> sliders to control the speed and x angle, however, I can not find a
> method to exit the loop, except for possibly adding a slider that could
> turn it off.
Do not use a for or while loop for an animation. Instead, set up your code
so that
each time a frame is drawn, a widget timer event is set with
WIDGET_CONTROL, TIMER=delay
(where delay can be zero). Then the widget event handler catches the timer
event,
draws the next frame, and resets the timer, etc. The loop can be terminated
by instructing
the event handler to ignore timer events. This is how CW_ANIMATE does it.
Information about the current state of the animation (current frame, which
direction
we're going in, where the end is & what to do when we get there) can be
stored in a
structure stored attached to one of the widget's UVALUE fields or, better,
in an object.
I have found object graphics particularly good for animations, and I have
written a
set of animator classes, which illustrate the above technique.
See my Web page: http://katipo.niwa.cri.nz/~hadfield/gust/software/idl/.
In particular the MGHgrAnimation and MGHgrAnimator classes and the
MGH_EXAMPLE_ANIMATOR routine. But you'll need version 5.2 to run them.
---
Mark Hadfield m.hadfield@niwa.cri.nz
National Institute for Water and Atmospheric Research
PO Box 14-901, Wellington, New Zealand
|
|
|
|