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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

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

patrick dudjalija
Dear David,
 
It's *EXACTLY* what i needed.
Thank you very much !
 
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 ? (see code belows).
 
Thank you !
 
|m1 m2|
m1:=Morph new.
m1 extent:800@600.
m1 color:Color blue.
m1 center: Display center.
m1 openInWorld.
m1 clipSubmorphs:true.
m2:=Morph new.
m2 extent:200@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).
].
"Transcript show: (pos asString);cr."
 m2 position:pos.
].

2012/7/19 <[hidden email]>
Send Beginners mailing list submissions to
        [hidden email]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.squeakfoundation.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        [hidden email]

You can reach the person managing the list at
        [hidden email]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1. Re: Morphic - how to make a submorph not visible outside  his
      owner ? (David Corking)
   2. Re: Morphic - how to make a submorph not visible outside  his
      owner ? (David Corking)


----------------------------------------------------------------------

Message: 1
Date: Wed, 18 Jul 2012 15:02:25 +0100
From: David Corking <[hidden email]>
Subject: Re: [Newbies] Morphic - how to make a submorph not visible
        outside his owner ?
To: "A friendly place to get answers to even the most basic questions
        about   Squeak." <[hidden email]>
Message-ID:
        <[hidden email]>
Content-Type: text/plain; charset=ISO-8859-1

Patrick, Is clipSubmorphs what you want?

David


------------------------------

Message: 2
Date: Wed, 18 Jul 2012 16:23:07 +0100
From: David Corking <[hidden email]>
Subject: Re: [Newbies] Morphic - how to make a submorph not visible
        outside his owner ?
To: "A friendly place to get answers to even the most basic questions
        about   Squeak." <[hidden email]>
Message-ID:
        <CAG+Z5JcYzXFMzeJnQhd63m4RF+=k9uz_V2SMfL=[hidden email]>
Content-Type: text/plain; charset=ISO-8859-1

I should be more specific. Try

m1 clipSubmorphs: true.

Hope that helps. David

p.s. I think your do loop pre-empts the Morphic UI loop.
Have you read John Maloney's tutorial on the step method?
http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/morphic.final.pdf
In the meantime, you could switch your Transcript hack for this hack :)
  m1 refreshWorld.


------------------------------

_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners


End of Beginners Digest, Vol 75, Issue 9
****************************************


_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

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

dcorking
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@600.
m1 color:Color blue.
m1 center: Display center.
m1 clipSubmorphs: true.
m1 openInWorld.

m2:=Morph new.
m2 extent:200@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!
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners