如何改变submorph位置

yi *_*eng 5 smalltalk squeak pharo morphic

我有两个变形,一个在另一个.

a:= Morph new.
b:= Morph new. 
a addMorph: b. 
a openInWorld.
Run Code Online (Sandbox Code Playgroud)

但是当我想通过做b位置改变b的位置:100 @ 100时,它永远不会显示变化,所以我在这里缺少什么?或者是否有责任跟踪b的位置?

Mar*_*inW 6

这应该工作:

| 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.
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

请注意,这些位置是绝对的,如果您想要相对位置,您必须执行以下操作:

morph2 position: (morph1 position + (100@100))
Run Code Online (Sandbox Code Playgroud)

如果你将Morphs添加到一个窗口,你可以看看SystemWindow #addMorph:fullFrame:它提供了更好的定位submorphs的可能性.Morph还实现了#addMorph:fullFrame:但是在Pharo 2.0中,这似乎不适合我.

请看一下:Pharo collaborActive书Pharo的Basic Widgets章节.