【发布时间】:2010-11-01 15:44:44
【问题描述】:
我想知道 Morphic 的特别之处。
【问题讨论】:
标签: objective-c cocoa smalltalk pharo morphic
我想知道 Morphic 的特别之处。
【问题讨论】:
标签: objective-c cocoa smalltalk pharo morphic
Morphic 远不止 NSView 或任何其他 graphics 类,它们仅允许重新实现一组有限的功能。 Morphic 是一个极具延展性的 UI 构建工具包。 Morphic 背后的一些设计理念清楚地表明了这一意图:
#drawOn: 方法及其子变形的位置在它自己的坐标系中表示。【讨论】:
警告:Smalltalk 的实时动态环境是red pill。静态、冻结的语言对你来说永远不会一样 ;-)
简而言之:Morphic 是一个虚拟世界,您可以在其中直接探索活动对象(就像现实世界一样)。你有没有看过 UI 和...
虽然这些想法会在任何其他环境中导致痛苦和沮丧,但在 Morphic 中则不然。
如果你想大吃一惊,那就成为 Morphic 世界中的神:
启动一个Pharo图像,然后点击背景(实际上是“世界”)以调出世界菜单:
在菜单选项之一上调出“光环”(在我的 Mac 上按住 shift-alt-click):
将“拾取”光环(中上)拖放到世界某处:
享受您的菜单项,该菜单项现在可以在您想要的任何地方使用:
说真的,点击它并观看浏览器打开!
曾经有一个您总是使用的选项让供应商深埋了三层菜单?这个有用吗?!这是对 Morphic 等实时直接 GUI 环境强大功能的一瞥。
如果您对此感兴趣,请阅读 John Maloney 和 Randall Smith 的论文Directness and Liveness in the Morphic User Interface Construction Environment
【讨论】:
标题没有反映你的问题,所以我回答你的问题而不是标题。
我在过去两天阅读了有关 Morphic 的文章,并以我认为 morphic 的特别之处作为总结。
Morphic 非常适合 live coding。这是一个直接映射,这样当代码改变时,屏幕上的输出就会改变。和/或如果屏幕上的变形被改变(拖动),代码中的值也会改变。这在艺术表演中很酷!
但 Morphic 的目标是更高的抽象。变形的属性从代码中抽象出来。对文件执行SoC 或对服务器端数据库执行fetch。
我认为 WebStorage 和 JavaScript 文件是存储以交互方式更改的 Morph 属性的活跃状态的好选择。你看 - 编程是通过每个 Morph 完成的。然后代码只需要处理来自单击和拖动的事件。
research 的目标甚至已经抽象了代码。可以通过 Morph 进行编码,以定义单击或拖动会发生什么。变形可以是拼图,如Scratch。
必须将程序备份到某处的文件中。我不认为在云上进行编码是安全的。所以 JS 文件是唯一的选择(如果不设置服务器是一个选项),因为数据文件在本地是不允许的,即使在与 Web 应用程序相同的文件夹中也是如此。同源策略意味着相同的服务器 - 不同的文件夹。
当应用启动 Javascript 文件(或首先是 Web Storage)时,将设置变形世界。用户与那个世界交互。新状态可以存储在 WebStorage 中并通过下载获得。
您可以使用Lively Kernel 作为文件中的语言,或者将变形数据存储在一个对象或任何您认为最容易生成的文件中下载。
那么这有什么特别之处呢?我不会重复接受的答案,但这是我的结论:
【讨论】: