我正在研究Phratch (Smalltalk中的Scratch 2.0 ),并修改了InputEventSensor>>processEvent方法以存储最后一个按下的键,其方式类似于如何存储修饰符键,以便它们if <key> pressed块工作。
所以我现在有一个定制的InputEventSensor类:
keyPressedprocessEventkeyPressed和clearKeystate新方法位于一个类别*Phratch中,很好,因此这些方法被保存到Phratch Monticello包中。但是processEvent呢,应该移到*Phratch类别吗?实例变量呢?
发布于 2013-05-12 12:04:19
有几件事正在发生:)。
首先,将现有的方法移动到项目的包中就是我们所称的覆盖。也就是说,当您将包加载到映像中时,现有的方法定义将被定义过度。我不会建议只有在极端需要的时候才让它凌驾于上。实际上,最好的方法应该是创建钩子,将它们集成到法老的代码库中,然后将项目插入给定的钩子:)。
关于使用实例变量扩展类,我认为Monticello并没有真正处理这个问题。一个可能的解决方案是在元配置中添加预加载操作,将实例变量添加到给定的类中。这样,inst就会在方法之前安装。
第三,也是最后一个,了解是否仍然按下某个键的真正好方法是侦听KeyDown和KeyUp事件。当给出KeyUp事件时,会释放一个键。但是,keyDown和keyUp事件目前还不能在there上正常工作(在所有平台中,用于识别密钥的密钥代码都会产生OS特定的值,而且有些密钥还没有很好地处理)。但是,我相信这将在即将到来的3.0版本的法罗更好。
当然,如果您想让这几点变得更好,您可以做出贡献:)。
https://stackoverflow.com/questions/16495436
复制相似问题