2013-04-02 14 views
5

Mam dwie morphs, które jedna jest w drugiej.jak zmienić pozycję submorficzną

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

ale gdy chcę zmienić pozycję B wykonując pozycję B: 100 @ 100, nigdy nie pokazuje zmianę, więc co ja tu brakuje? czy jest to w jakiś sposób obowiązek śledzenia pozycji b?

+0

jest 'Morph' nawet na tyle kompletne, aby go używać, czy nie trzeba używać' RectangleMorph' lub niektóre inna konkretna podklasa 'Morpha? –

+2

@Shakedown Tak, Morph jest wystarczająco kompletny, aby można go było użyć bezpośrednio. –

Odpowiedz

6

To powinno działać:

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

Rezultat:

enter image description here

Zauważ, że pozycje te są absolutne, jeśli chcesz względne pozycje trzeba zrobić coś takiego:

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

Jeśli dodasz Morphy do okna, możesz hav Spójrz na SystemWindow #addMorph: fullFrame: która oferuje lepsze możliwości pozycjonowania submorf. Morph implementuje także #addMorph: fullFrame: ale wydaje mi się, że to nie działa w Pharo 2.0.

Zapraszamy do obejrzenia: Pharo collaborActive book oraz w rozdziale Podstawowe widgety z Pharo w przykładzie 2.

Powiązane problemy