[英]What is the difference between a Morph in Morphic and a NSView in Cocoa?
我想知道使Morphic特别的事物。
Morphic远远超过了NSView或任何其他仅允许重新实现一组有限功能的图形类。 Morphic是一个非常具有延展性的UI构造工具包。 Morphic背后的一些设计思想清楚地表明了这一意图:
#drawOn:
方法及其子变形的位置在其自己的坐标系中表示。 警告:Smalltalk的动态环境是一个红色药丸 。 静态的冻结语言对您而言永远不会相同;-)
简而言之:Morphic是一个虚拟世界 ,您可以在其中直接探索活动对象 (就像现实世界一样)。 您是否曾经看过UI并...
尽管这些想法会在其他任何环境中导致痛苦和沮丧,但在Morphic中却不会。
如果您想打定主意,请在变身世界中成为神:
启动Pharo图像,然后单击背景(实际上是“世界”)以调出世界菜单:
在菜单选项之一上调出“晕轮”(在Mac上按住Shift键并单击鼠标):
拖动“拾取”光晕(中上)并将其拖放到世界上的某个位置:
享受你需要的地方现在是可用的菜单项:
认真地,单击它并观看浏览器打开!
曾经有你总是使用一个厂商都埋三菜单层次深的选项? 这有用吗? 这是对实时直接GUI环境(如Morphic)的强大功能的一瞥。
如果您感兴趣,请阅读John Maloney和Randall Smith的论文《形态用户界面构建环境中的直接性和生动性》。
标题不代表您的问题,所以我回答您的问题,而不是标题。
最近两天,我已经阅读了有关Morphic的内容,并以我认为使morphic特殊的内容作为结论。
Morphic非常适合实时编码 。 这是一种直接映射,因此当更改代码时,屏幕上的输出也会更改。 和/或如果更改了屏幕上的变形,则代码中的值也会更改。 艺术表演太酷了!
但是Morphic的目标是实现更高的抽象度。 从代码中抽象出了morph的属性。 将SoC写入文件或获取服务器端数据库。
我想WebStorage和JavaScript文件是存储交互更改的Morph属性的活动状态的好选择。 您会看到-编程是通过每个Morph完成的。 然后,该代码仅需要处理单击和拖动中的事件。
研究的目的甚至将代码抽象掉了。 可以通过“变形”进行编码,以定义单击或拖动时发生的情况。 变形可以像Scratch一样是拼图。
必须将程序备份到某个位置的文件中。 我不认为在云上进行编码是安全的。 因此,JS文件是唯一的选择(如果不设置服务器,则是一个选择),因为数据文件不允许在本地使用,甚至不能与Web应用程序位于同一文件夹中。 “相同来源”策略表示相同的服务器-不是相同的文件夹。
当应用启动时,JavaScript文件(或首先放在Web存储中)将建立变形世界。 用户与那个世界互动。 新状态可以存储在WebStorage中并通过下载进行处理。
您可以将Lively Kernel用作文件中的语言,或者将变形数据存储在对象中,或者将您发现最简单的任何形式生成为要下载的文件。
那么这有什么特别的呢? 我不会重复已接受的答案,但这是我的结论:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.