[squeak-dev] How do I "sleep 5"?
karlramberg at gmail.com
Wed Feb 22 04:56:31 UTC 2023
A morph has to be in the world to be able to interact with it; eg.
If you don't want to see the morph you can send it message #hide. It makes
the morph invisible but it's still in the world and can interact with it.
To see the morph again send #show.
To delete the morph send #delete. The morph will be garbage collected.
On Tue, Feb 21, 2023 at 11:57 PM Eduardo Ochs <eduardoochs at gmail.com> wrote:
> Hi Vanessa!
> Thanks! =) This works in a workspace,
> "Create a SimpleSwitchMorph with label 'Toggle'
> and a SimpleButtonMorph with label 'Flash'.
> The button will be placed below the switch."
> sm := SimpleSwitchMorph new.
> sm openInWorld.
> bm := SimpleButtonMorph new.
> bm openInWorld.
> bm position: bm position + (0 at 32).
> "Three ways of toggling the color of the switch:"
> sm toggleState.
> bl := [ sm toggleState ].
> bl value.
> bm target: bl.
> bm actionSelector: #value.
> bm doButtonAction.
> "Two ways of toggling the switch after 1000ms:"
> sm addAlarm: #toggleState after: 1000.
> bm addAlarm: #doButtonAction after: 1000.
> but this doesn't:
> bm2 := SimpleButtonMorph new.
> bm2 target: bl.
> bm2 actionSelector: #value.
> bm2 addAlarm: #doButtonAction after: 1000.
> What is the right way to add an alarm to a morph that is not shown on
> the screen? Also, can I create a new invisible morph every time that I
> want to run an alarm? Are they going to be garbage collected?
> Thanks in advance!
> Eduardo Ochs
> On Tue, 21 Feb 2023 at 02:16, Vanessa Freudenberg <vanessa at codefrau.net>
>> The best way to do this in Morphic is with "alarms":
>> self addAlarm: #changeKeyboardFocus after: 5000.
>> which would execute the morph's changeKeyboardFocus method 5 seconds
>> The way of sleeping you suggest is possible too but more tricky,
>> since you would have to move your wait code to an extra process to not
>> block the UI process, but then make sure that the actual work is done in
>> the UI process again (Morphic is not multithreaded, although Squeak is).
>> On Mon, Feb 20, 2023 at 8:49 PM Eduardo Ochs <eduardoochs at gmail.com>
>>> Hi list,
>>> a few days ago I asked for help on how to send a "synthetic" keyboard
>>> event to a morph, and Karl Ramberg gave me exactly the right hints in
>>> this thread:
>>> My code is ready except for documentation and comments - I'll work on
>>> that in the next few days and then post the result here and on the
>>> ...but there's a feature that I want to add to it that - again =( -
>>> needs something that I'm not being able to discover by myself. How do
>>> I write a line of code that waits for 5 seconds, sort of like running
>>> "sleep 5" in a shell, and that doesn't block the rest of the system?
>>> If I have that I'll be able to run these two lines in a workspace,
>>> self mySleep: 5000.
>>> kf := self currentHand keyboardFocus.
>>> switch the keyboard focus to something else by clicking on it, and
>>> then the variable kf will be set to this "something else"...
>>> Thanks in advance!
>>> Eduardo Ochs
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Squeak-dev