[Newbies] Quick noob snippets

Bert Freudenberg bert at freudenbergs.de
Tue May 20 15:05:59 UTC 2008


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 -




More information about the Beginners mailing list