2013-04-02 11 views
5

Ho due morph che uno è nell'altro.come cambiare la posizione del submorfo

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

ma quando voglio cambiare la posizione del b facendo posizione B: 100 @ 100, che non mostra mai il cambiamento, così che cosa mi manca qui? o è in qualche modo la responsabilità di tenere traccia della posizione di b?

+0

è 'Morph' anche abbastanza completa per usarlo, non è necessario utilizzare un' RectangleMorph' o qualche altra sottoclasse concreta di 'Morph'? –

+2

@Shakedown Sì, Morph è sufficientemente completo per essere utilizzato direttamente. –

risposta

6

Questo dovrebbe funzionare:

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

Il risultato:

enter image description here

Nota che le posizioni sono in assoluto, se si desidera che le posizioni relative che devi fare qualcosa di simile:

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

Se aggiungi Morph a una finestra, potresti avere e un'occhiata a SystemWindow #addMorph: fullFrame: che offre migliori possibilità di posizionare gli submorfi. Morph implementa anche #addMorph: fullFrame: ma in qualche modo questo non sembra funzionare per me in Pharo 2.0.

Dai un'occhiata alla: Pharo collaborActive book e al capitolo Widget di base del Pharo dal Esempio 2.

Problemi correlati