Hi Jon, the #changed call is not really neccessary. It needs to only do the doOneCycle thing.
try this on a workspace:
m := Morph new. m openInWorld. m color: Color yellow. (Delay forSeconds: 2) wait. m color: Color blue.
select all and evaluate it. This code won´t work. But if you do:
m := Morph new. m openInWorld. m outermostWorldMorph doOneCycle. m color: Color yellow. m outermostWorldMorph doOneCycle. (Delay forSeconds: 2) wait. m color: Color blue.
it will.
Take into account that the 2 seconds delay is a no no. The way to do the delay is how you did it with the loop.
Regards, Hernán
Jon Hylands wrote:
On Mon, 27 Dec 2004 19:59:18 -0500, Jim Rosenberg jr@amanue.com wrote:
Well, I just tried this, and am still not seeing the color change.
You need to do the following:
aMorph changeBorderColor; changed. Display forceDisplayUpdate. 100 timesRepeat: [ (Delay forMilliseconds: 20) wait. aMorph world doOneCycle]. aMorph restoreBorderColor; changed. "The following line is optional, and probably not needed." Display forceDisplayUpdate.
To force the morph to redraw, you need to send #changed to it. After that, you need to force the redraw to the display. The delay as implemented above is just a simpler way of keeping the UI running while you're pausing.
Later, Jon
Jon Hylands Jon@huv.com http://www.huv.com/jon
Project: Micro Seeker (Micro Autonomous Underwater Vehicle) http://www.huv.com