On 20.05.2008, at 16:46, Karl Ramberg wrote:
Bert Freudenberg wrote:
On 20.05.2008, at 07:01, Herbert König wrote:
Hello Sven,
don't know about your first Question though people now may think it has been replied to.
SS> 100 timesRepeat: [randomNo := 100 atRandom. anEllipse height: SS> randomNo. anEllipse borderWidth: anEllipse borderWidth + 1 ]
SS> SS> It did work but it did the moves all at once. At first I
World doOneCycleNow will update the UI and (Delay forMilliseconds: 20) wait will give you some time to watch every step.
So your loop might look like
100 timesRepeat: [randomNo := 100 atRandom. anEllipse height: randomNo. anEllipse borderWidth: anEllipse borderWidth + 1. World doOneCycleNow. (Delay forMilliseconds: 20) wait]
Note that #doOneCycleNow is a Bad Hack, never to be used in real code, being punished by <insert favorite tim quote>.
The Right Way to do this in Morphic is to add a #step method in your own Morph subclass.
Then you should have a look at ColorPickerMorph :-)
Keep in mind we are on the beginners list. I do know where this is used, and why. But if someone asks this on the beginners list it is bad advice to give.
If you know *exactly* what you are doing, like if you are working on the system-level implementation of a modal color picker, or the internal logic of an MVC-like pop-up menu that actually has to wait until closed before returning a value, then yes, #doOneCycleNow is useful. It still is a dangerous hack, because even though it looks innocuous, it is actually a recursive call on something that's not particularly designed for recursion (in Morphic, you are always in a doOneCycle already).
- Bert -