Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Smalltalk 如何更改子变形位置_Smalltalk_Pharo_Squeak_Morphic - Fatal编程技术网

Smalltalk 如何更改子变形位置

Smalltalk 如何更改子变形位置,smalltalk,pharo,squeak,morphic,Smalltalk,Pharo,Squeak,Morphic,我有两个变形,一个在另一个 a:= Morph new. b:= Morph new. a addMorph: b. a openInWorld. 但是当我想通过做b位置来改变b的位置时:100@100,它从不显示变化,那么我在这里错过了什么?或者a有责任跟踪b的位置吗?这应该有效: | morph1 morph2 | morph1 := Morph new. morph1 color: Color red. morph1 extent: 200@200. morph2 := Morp

我有两个变形,一个在另一个

a:= Morph new.
b:= Morph new. 
a addMorph: b. 
a openInWorld.
但是当我想通过做b位置来改变b的位置时:100@100,它从不显示变化,那么我在这里错过了什么?或者a有责任跟踪b的位置吗?

这应该有效:

| morph1 morph2 |

morph1 := Morph new.
morph1 color: Color red.
morph1 extent: 200@200.

morph2 := Morph new.
morph2 color: Color green.
morph2 extent: 50@50.

morph1 addMorph: morph2.
morph2 position: 100@100.
morph1 openInWorld.
结果是:

请注意,位置是绝对的,如果您想要相对位置,必须执行以下操作:

morph2 position: (morph1 position + (100@100))
如果将变形添加到窗口中,可以查看SystemWindow#addMorph:fullFrame:这为定位子变形提供了更好的可能性。Morph还实现了#addMorph:fullFrame:但在Pharo 2.0中,这似乎并不适用于我

看看:
在Pharo的基础Widgets一章中,通过示例2.

Morph
甚至可以使用它,您不需要使用
rectanglemorp
Morph
的其他具体子类吗?@安定是的,Morph足够完整,可以直接使用。