Morphic中的Morph与Cocoa中的NSView有什么区别?

时间:2010-11-01 15:44:44

标签: objective-c cocoa smalltalk pharo morphic

我想了解使Morphic特别的事情。

3 个答案:

答案 0 :(得分:6)

Morphic远远超过NSView或任何其他图形类,只允许重新实现一组有限的功能。 Morphic是一个极具可塑性的UI构建工具包。 Morphic背后的一些设计理念使这个意图明确:

  • 包括2D坐标系的综合层次结构。它们不限于笛卡儿或线性。有用的非线性坐标系包括极坐标,对数,双曲线和地理(地图样)投影。
  • 从变形本身分离坐标系的处理。变形应该只需要选择其首选坐标系,而不是需要将它绘制的每个点单独转换为世界坐标。其#drawOn:方法及其子变形的位置以其自己的坐标系表示。
  • 完全独立显示属性,例如大小或分辨率。没有像素的概念。 GUI被认为处于更高层次。所有GUI都与像素分辨率无关。所有渲染都是反锯齿。
  • 分离坐标系可以简化变形的移动,缩放和旋转。
  • 所有坐标都是浮点数。这对于允许完全任意的比例而没有明显的舍入误差是有好处的。
  • 变形层次结构不是形状的层次结构。变形没有边界或颜色的概念。亚模态对齐没有一般概念。特定的变形可以以任何对自身有意义的方式实现这些。
  • Morphic事件处理非常灵活,允许您将事件发送到任意对象。该对象不需要子类Morph。

答案 1 :(得分:6)

警告:Smalltalk的实时动态环境为red pill。静态,冻结的语言对你来说永远不会是一样的; - )

简而言之:Morphic是一个虚拟世界,您可以直接探索实时对象(就像现实世界一样)。你有没有看过UI和......

  • 想知道“哇,真的很酷!他们是怎么做到的?”
  • kvetch“我希望他们做过X!”

虽然这些想法会导致任何其他环境中的痛苦和挫折,但在Morphic中则不然。

如果你想要打击你的思想,在一个形态世界中成为一个神:

  1. 启动Pharo图像,然后单击背景(实际上是“世界”)以显示世界菜单:

    alt text

  2. 在其中一个菜单选项上显示“halos”(在我的Mac上按住Shift键并单击): alt text

  3. 拖动“拾取”光环(中上部)并将其放在世界的某个位置: alt text

  4. 享受您 想要的菜单项,现在可以使用它: alt text

  5. 说真的,点击它,看看浏览器打开!!

    有没有一个选项,你总是使用供应商埋藏了三个菜单级别?这有用吗?!这是Morphic等直播GUI环境的强大功能。

    如果您有兴趣,请阅读John Maloney&兰德尔史密斯的论文Directness and Liveness in the Morphic User Interface Construction Environment

答案 2 :(得分:0)

标题未映射您的问题,所以我回答您的问题,而不是标题。
我已经阅读了过去两天有关Morphic的内容,并以我认为使morphic特殊的内容结束了。

Morphic非常适合live coding。这是一种直接映射,因此当更改代码时,屏幕上的输出也会更改。和/或如果更改了屏幕上的变形,则代码中的值也会更改。艺术表演太酷了!

但是Morphic的目标是实现更高的抽象度。从代码中抽象出了morph的属性。将SoC放在文件或fetch服务器端数据库中。

我认为WebStorage和JavaScript文件是存储交互更改的Morph属性的活动状态的好选择。您会看到-编程是通过每个Morph完成的。然后,该代码仅需要处理单击和拖动中的事件。

research的目标甚至将代码抽象化了。可以通过“变形”进行编码,以定义单击或拖动时发生的情况。变形可以像Scratch一样是拼图。

必须将程序备份到某个位置的文件中。我不认为在云上进行编码是安全的。因此,JS文件是唯一的选择(如果不设置服务器,则是一个选择),因为数据文件不允许在本地使用,甚至不能与Web应用程序位于同一文件夹中。 “相同来源”策略意味着相同的服务器-不是相同的文件夹。

应用启动时,Javascript文件(或首先为Web Storage)将建立变形世界。用户与那个世界互动。新状态可以存储在WebStorage中并通过下载进行处理。

您可以使用Lively Kernel作为文件中的语言,或将变形数据存储在对象中,或者将其存储为最容易生成的内容以下载为文件。

那么这有什么特别的呢?我不会重复接受的答案,但这是我的结论:

  • 在“变形”屏幕上看到的所有内容都是 morph
  • 变形树称为世界
  • 每个变体的坐标,尺寸和属性从代码中提取到树中。
  • 该研究的目的也是将代码抽象出来。