如何在 Squeak 的 Morph 上使用 Pen 进行交互绘制?
How to draw interactively with Pen on a Morph in Squeak?
它无法让 Pen 在 Morph 中正常工作。
我看到了下面的代码片段,但我不明白如何在移动笔后更新 Morph 的视图。我试图在各种 (sm, pen, (sm owner)) 对象中发送 "changed" 但它没有解决它。
在下面的代码片段中,如果我调整 window 的大小,则会绘制线条。或者,如果我把 "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.
方法找到了,但是逻辑不明白
把这个加在最后。
sm layoutChanged.
pen goto: 150@100.
sm layoutChanged.
" ... and so on "
如果我查看 "layoutChanged" 定义并尝试自己发送这些方法,我会看到规则是 "generateRotatedForm" 的命令...嗯...为什么?
如果有 Morphic 专家愿意对此有所说明,我将不胜感激。
再见
尼古拉
您应该发送给 SketchMorph
而不是 #layoutChanged
的消息是
sm revealPenStrokes
这是 - 双关语 - 非常明显的意图;不是吗?
我是怎么找到它的
使用 Nicola 提供的提示,我调试了 sm layoutChanged
试图理解它显示该行的原因。我之前试过sm changed
,但没有成功,所以我知道线索一定在generateRotatedForm
。由于此方法重新定义了 ivar rotatedForm
,因此我查找了所有更改它的方法,因为我怀疑问题出在某些未被 changed
无效的缓存中。很快,选择器 revealPenStrokes
从修改 rotatedForm
.
的相当短的方法列表中获胜
它无法让 Pen 在 Morph 中正常工作。
我看到了下面的代码片段,但我不明白如何在移动笔后更新 Morph 的视图。我试图在各种 (sm, pen, (sm owner)) 对象中发送 "changed" 但它没有解决它。
在下面的代码片段中,如果我调整 window 的大小,则会绘制线条。或者,如果我把 "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.
方法找到了,但是逻辑不明白
把这个加在最后。
sm layoutChanged.
pen goto: 150@100.
sm layoutChanged.
" ... and so on "
如果我查看 "layoutChanged" 定义并尝试自己发送这些方法,我会看到规则是 "generateRotatedForm" 的命令...嗯...为什么?
如果有 Morphic 专家愿意对此有所说明,我将不胜感激。
再见 尼古拉
您应该发送给 SketchMorph
而不是 #layoutChanged
的消息是
sm revealPenStrokes
这是 - 双关语 - 非常明显的意图;不是吗?
我是怎么找到它的
使用 Nicola 提供的提示,我调试了 sm layoutChanged
试图理解它显示该行的原因。我之前试过sm changed
,但没有成功,所以我知道线索一定在generateRotatedForm
。由于此方法重新定义了 ivar rotatedForm
,因此我查找了所有更改它的方法,因为我怀疑问题出在某些未被 changed
无效的缓存中。很快,选择器 revealPenStrokes
从修改 rotatedForm
.