【发布时间】:2012-12-29 15:12:02
【问题描述】:
我对 smalltalk 还很陌生,一个看似简单的问题让我抓狂。 我自己的类继承自 Morphic 类并覆盖 keyStroke
keyStroke: anEvent
Transcript show: myDigitClass.
(((anEvent keyValue) > 47) and: ((anEvent keyValue) < 58)) ifTrue: [
"myDigitClass dropADigit"
"myDigitClass setADigit: (anEvent keyValue) asCharacter."
Transcript show: (anEvent keyValue) asCharacter
]
到目前为止有效,Transcript 显示了我在键盘上所做的输入但是即使我初始化了这个变量并通过 setter 方法将它传递给这个类,实例变量 myDigitClass 也是 NIL .如果通过我编写的 getter 方法访问 myDigitClass 就可以了。
我调用 showPane 方法并将输入参数 digitMD 分配给实例 Var。
showPane: digitMD
|pane|
myDigitClass := digitMD.
pane := DigitMorph new.
pane extent: 340@340.
^pane openInWorld.
在工作区中,我执行以下操作:
myDigitClass := DigitClass new.
myTest := DigitMorph new.
myTest showPane: myDigitClass.
【问题讨论】:
-
您使用什么方言?法罗、吱吱声、大众、弗吉尼亚州……?
-
看完你的上一条评论后,我想看看你初始化变量的代码以及你用来声明类的代码(定义实例变量的地方)。
-
好的,我已将其附加到我的问题发布中。
-
我尝试重新创建您的设置,但我需要知道层次结构:
DigitClass和DigitMorph从哪些类继承?我需要任何其他方法来让你的例子继续下去吗?如果可以的话,给我一个包含所有相关类的文件,我猜这将是最简单的方法。 -
感谢您的帮助!我终于解决了这个问题,在我绘制窗口的“显示”方法中,我再次实例化了我覆盖的变形,所以引用是错误的。我不知道魔鬼在我身上得到了什么;)
标签: event-handling smalltalk squeak