Re: pause button for Dynamic?
- To: mathgroup at smc.vnet.net
- Subject: [mg113741] Re: pause button for Dynamic?
- From: John Fultz <jfultz at wolfram.com>
- Date: Wed, 10 Nov 2010 06:27:51 -0500 (EST)
On Tue, 9 Nov 2010 03:55:32 -0500 (EST), Gianluca Gorni wrote:
>
> Hello,
>
> I have a simple simulation of a Brownian motion
>
> DynamicModule[{brown == {0, 0}},
> Framed@Graphics[
> Dynamic[Point[
> brown +== RandomReal[NormalDistribution[0, 1/300], 2]]],
> PlotRange -> 1]]
>
> How can I add a pause/play button?
>
> At the moment the only way I know to stop the animation
> is to delete the output cell.
>
> Thank you in advance,
> Gianluca Gorni
There are several ways to do this. Here's a couple to give you some ideas.
First, a method that uses a Dynamic[] value of the DynamicUpdating option:
DynamicModule[{brown == {0, 0}, update == True},
Column[{Row[{Checkbox[Dynamic[update]], " Run animation"}],
Style[Framed@
Graphics[
Dynamic[Point[
brown +== RandomReal[NormalDistribution[0, 1/300], 2]]],
PlotRange -> 1],
DynamicUpdating -> Dynamic[update]]}]]
Another is to use TrackedSymbols to track an Animator[]:
DynamicModule[{brown == {0, 0}, anim},
Column[{Animator[Dynamic[anim]],
Framed@Graphics[
Dynamic[Point[anim;
brown +== RandomReal[NormalDistribution[0, 1/300], 2]],
TrackedSymbols :> {anim}], PlotRange -> 1]}]]
]
In both cases, the addition of controls causes the graphic to shrink
automatically to a smaller size, so you may wish to add ImageSize->Medium as an
option to the Graphics[] expression.
Sincerely,
John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.