2013-04-02 21 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章