質問

I have two morphs that one is in the other.

a:= Morph new.
b:= Morph new. 
a addMorph: b. 
a openInWorld.

but when I want to change b's position by doing b position: 100@100, it never shows the change, so what am I missing here? or is it somehow a's responsibility to keep track of b's position?

役に立ちましたか?

解決

This should work:

| morph1 morph2 |

morph1 := Morph new.
morph1 color: Color red.
morph1 extent: 200@200.

morph2 := Morph new.
morph2 color: Color green.
morph2 extent: 50@50.

morph1 addMorph: morph2.
morph2 position: 100@100.
morph1 openInWorld.

The result:

enter image description here

Note that the positions are absolute, if you want relative positions you have to do something like:

morph2 position: (morph1 position + (100@100))

If you add Morphs to a window, you could have a look at SystemWindow #addMorph:fullFrame: which offers better possibilities to position submorphs. Morph also implements #addMorph:fullFrame: but somehow this does not seem to work for me in Pharo 2.0.

Have a look at: Pharo collaborActive book and at the Basic Widgets chapter of Pharo by Example 2.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top