2013-04-02 18 views
5

Ich habe zwei Morphen, die man in der anderen ist.wie submorph Position ändern

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

aber wenn ich Position des b wollen, indem Sie b-Position ändern: 100 @ 100, zeigt es nie um die Änderung, so was mache ich hier fehlt? Oder ist es irgendwie eine Verantwortung, die Position von b im Auge zu behalten?

+0

Ist 'Morph' sogar vollständig genug, es zu benutzen, müssen Sie nicht eine' RectangleMorph' oder einige verwenden müssen andere konkrete Unterklasse von 'Morph'? –

+2

@Shakedown Ja, Morph ist vollständig genug, um direkt verwendet zu werden. –

Antwort

6

Dies sollte funktionieren:

| 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. 

Das Ergebnis:

enter image description here

Beachten Sie, dass die Positionen absolut sind, wenn Sie die relativen Positionen wollen Sie so etwas wie zu tun haben:

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

Wenn Sie Morphs zu einem Fenster hinzufügen, könnten Sie hav Ein Blick auf SystemWindow #addMorph: fullFrame: bietet bessere Möglichkeiten, Submorphs zu positionieren. Morph implementiert auch #addMorph: fullFrame: aber irgendwie scheint das bei Pharo 2.0 nicht zu funktionieren.

Werfen Sie einen Blick auf: Pharo collaborActive book und am Grund Widgets Kapitel von Pharo von Beispiel 2.