<div dir="ltr">This is the DigitalClock class, an example class that I wrote to show the students how to use animation in Pharo:<div>======</div><div>TextMorph subclass: #DigitalClock<br></div><div>...</div><div><br></div>
<div><div>step</div><div><span class="" style="white-space:pre">      </span>self newContents: Time now asString</div></div><div>=======</div><div style>That's it.  TextMorph already has the capability to display a text string on the screen as a "Morph", a graphical Object.  The step method, which is called by the display loop once per second, simply sets the contents of the text morph to be the current time.</div>
<div style><br></div><div style>Here is the step method for one student's homework solution to the dancing boxes problem:</div><div style><br></div><div style><div><b>step</b></div><div><span class="" style="white-space:pre">     </span>"implements what needs to be done during a dance step"</div>
<div><span class="" style="white-space:pre">    </span>| danceMove |</div><div><span class="" style="white-space:pre">      </span>super step.</div><div><span class="" style="white-space:pre">        </span>enableDancing ifTrue: [</div>
<div><span class="" style="white-space:pre">            </span>danceMove := danceRoutine nextMove.</div><div><span class="" style="white-space:pre">                </span>danceMove do:self.</div><div><span class="" style="white-space:pre"> </span>]</div>
<div><br></div><div style>This homework has all sorts of choreography built in: static and dynamic dances, and so on.  danceRoutine was pluggable, as was the dance partner.  Still, all the step method does is ask the dance routine for the next move, and do it.  There is also a danceStep object, use to build the danceRoutines; each danceStep is either a translation or a rotation.</div>
<div style><br></div><div style>The message is that there is no real limit to the complexity of the animations that can be built upon this simple "step" and "stepTime" interface.</div><div style><br></div>
<div style>     Andrew</div><div style><br></div></div></div>