4

它无法让 Pen 在 Morph 中正常工作。

我到达了下面的片段,但我不明白如何在移动笔后更新 Morph 的视图。我试图在各种(sm,pen,(sm owner))对象中发送“更改”,但它没有解决它。

如果我调整窗口大小,则在下面的代码段中绘制线条。或者,如果我将“openInWindow”作为最后一行。

sm := SketchMorph new.
sm clearExtent: 600@600 fillColor: (Color yellow) darker darker.
sm position: 100@100.
sm openInWindow. 
pen := sm penOnMyForm.
pen defaultNib: 4; color: (Color red).
pen up.
pen goto: 10@10. 
pen down.
pen goto: 100@100.
4

2 回答 2

5

您应该发送给 的消息SketchMorph,而不是#layoutChanged,是

sm revealPenStrokes

这是-双关语的意思-非常揭示意图;不是吗?

我是怎么找到的

使用 Nicola 提供的提示,我进行了调试,sm layoutChanged试图理解为什么它显示了这条线。我之前尝试sm changed过没有运气,所以我知道线索必须在generateRotatedForm. 而且由于此方法重新定义了 ivar rotatedForm,因此我查找了所有更改它的方法,因为我怀疑问题出在某些未被changed. 很快,选择器revealPenStrokes从相当短的修改方法列表中脱颖而出rotatedForm

于 2019-08-15T01:41:44.713 回答
1

我找到了方法,但我不明白其中的逻辑。

只需在最后添加即可。

sm layoutChanged.
pen goto: 150@100.
sm layoutChanged.
" ... and so on "

如果我查看“layoutChanged”定义并尝试自己发送这些方法,我会看到规则是“generateRotatedForm”的命令......嗯......为什么?

如果一些 Morphic 专家想对此有所了解,我将不胜感激。

再见尼古拉

于 2019-08-14T23:26:03.287 回答