[Newbies] Re: Morphic - how to make a submorph not visible outside his owner

David Corking lists at dcorking.com
Thu Jul 19 14:17:09 UTC 2012


patrick dudjalija wrote:

> It's *EXACTLY* what i needed.

You are welcome.

> By the way, anyone got an idea why if the line "Transcript show: (pos
> asString);cr." is commented out or the Transcript Window is closed, i don't
> get the animation but only the final state of the animation ?

You blocked Morphic's UI loop, so that your morph doesn't update the screen.

As Tobias said, try to use Morphic's built-in hooks to step animation,
as shown here:

http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/morphic.final.pdf

Once I understood how timing works, I found step easier than
iteration. It is more fun too, as you can co-ordinate simultaneous
animations.

However the following quick ugly hack works.  I send a refreshWorld
message to m1 after each iteration. The UI loop is still blocked,
which is probably not what you want, but you can see the animation
without a transcript.

|m1 m2|

m1:=Morph new.
m1 extent:800 at 600.
m1 color:Color blue.
m1 center: Display center.
m1 clipSubmorphs: true.
m1 openInWorld.

m2:=Morph new.
m2 extent:200 at 200.
m2 color:Color red.

m1 addMorph: m2.
m2 center: m1 center.

1 to:200 do:[:el|
	|pos|
	(Duration seconds:0.01) asDelay wait.
	pos:=(m2 position x -5)@(m2 position y).
	((pos x + m2 width) >= (m1 position x)) ifFalse:[
		pos:=((m1 position x + m1 width)@ m2 position y).
		].
	m2 position:pos.	
	m1 refreshWorld.
	].

Have fun!


More information about the Beginners mailing list