5

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

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

但是当我想通过执行 b position: 100@100 来更改 b 的位置时,它永远不会显示更改,那么我在这里缺少什么?还是以某种方式跟踪b的位置是a的责任?

4

1 回答 1

6

这应该有效:

| 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 collaborActive 书 和示例 2 中 Pharo 的 Basic Widgets 章节。

于 2013-04-03T08:49:39.557 回答