2013-04-02 26 views
5

我有两个变形,一个在另一个。如何改变子形态位置

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

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

+0

是'Morph'甚至完全足够使用它,也不需要使用一个'RectangleMorph'或一些Morph'的其他具体子类? –

+2

@Shakedown是的,Morph足够完整,可以直接使用。 –

回答

6

这应该工作:

| morph1 morph2 | 

morph1 := Morph new. 
morph1 color: Color red. 
morph1 extent: [email protected] 

morph2 := Morph new. 
morph2 color: Color green. 
morph2 extent: [email protected] 

morph1 addMorph: morph2. 
morph2 position: [email protected] 
morph1 openInWorld. 

结果:

enter image description here

注意,位置是绝对的,如果你想要的相对位置,你必须做一些事情,如:

morph2 position: (morph1 position + ([email protected])) 

如果你添加变形到一个窗口,你可以hav看一下SystemWindow #addMorph:fullFrame:它提供了更好的位置子类型的可能性。 Morph还实现了#addMorph:fullFrame:但不知怎的,这在Pharo 2.0中似乎不适用于我。

看一看:Pharo collaborActive book 并通过实例菲罗的基本窗口部件第2章