9

我想知道使 Morphic 与众不同的地方。

4

3 回答 3

7

Morphic 不仅仅是 NSView 或任何其他简单地允许重新实现一组有限功能的图形类。Morphic 是一个极具延展性的 UI 构建工具包。Morphic 背后的一些设计理念清楚地表明了这一意图:

  • 包括一个全面的二维坐标系层次结构。它们不限于笛卡尔或线性。有用的非线性坐标系包括极坐标、对数、双曲线和地理(类似地图)投影。
  • 将坐标系的处理与变形本身分开。变形应该只需要选择它的首选坐标系,而不是需要将它绘制的每个点都单独转换为世界坐标。它的#drawOn:方法和子变形的位置在它自己的坐标系中表示。
  • 完全独立的显示属性,如大小或分辨率。没有像素的概念。GUI 被认为具有更高的层次。所有的 GUI 都独立于像素分辨率。所有的渲染都是抗锯齿的。
  • 分离坐标系简化了变形的移动、缩放和旋转。
  • 所有坐标都是浮点数。这有利于允许完全任意的比例而没有明显的舍入误差。
  • 变形层次结构不是形状的层次结构。变形没有边框或颜色的概念。没有子变形对齐的一般概念。一个特定的变形可以以任何对自己有意义的方式来实现这些。
  • Morphic 事件处理很灵活,允许您将事件发送到任意对象。该对象不需要子类 Morph。
于 2010-11-02T05:47:38.807 回答
6

警告:Smalltalk 的实时动态环境是一颗红色药丸。静态的、冻结的语言对你来说永远不会一样 ;-)

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

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

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

如果您想大吃一惊,请成为 Morphic 世界中的神:

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

    替代文字

  2. 在其中一个菜单选项上调出“光环”(在我的 Mac 上按住 shift-alt-click): 替代文字

  3. 拖动“拾取”光环(中上)并将其放在世界某处: 替代文字

  4. 享受您现在可以在任何地方使用的菜单项: 替代文字

说真的,单击它并观看浏览器打开!

有没有一个你总是使用的选项,一个供应商已经深埋了三层菜单?这个有用吗?!这是对像 Morphic 这样的实时直接 GUI 环境的强大功能的一瞥​​。

如果您感兴趣,请阅读 John Maloney 和 Randall Smith 的论文Directness and Liveness in the Morphic User Interface Construction Environment

于 2010-12-10T15:09:40.337 回答
0

标题没有映射你的问题,所以我回答你的问题而不是标题。
在过去的两天里,我阅读了有关 Morphic 的文章,并以我认为 morphic 的特别之处作为总结。

Morphic 非常适合实时编码。这是一个直接映射,这样当代码改变时,屏幕上的输出就会改变。和/或如果屏幕上的变形被改变(拖动),代码中的值也会改变。这在艺术表演中很酷!

但是 Morphic 的目标是更高的抽象。变形的属性从代码中抽象出来。对文件执行SoC获取服务器端数据库。

我想 WebStorage 和 JavaScript 文件是存储以交互方式更改的 Morph 属性的活跃状态的好选择。你看 - 编程是通过每个 Morph 完成的。然后代码只需要处理来自单击和拖动的事件。

研究的目的甚至将代码抽象出来。可以通过 Morph 进行编码,以定义单击或拖动会发生什么。Morphs 可以是Scratch中的拼图。

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

当应用程序启动 Javascript 文件(或首先是Web 存储)将设置变形世界。用户与那个世界交互。新状态可以存储在 WebStorage 中并通过下载获得。

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

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

  • 你在 Morphic 屏幕上看到的一切都是morph
  • 变形树被称为世界
  • 每个变形的坐标、维度和属性都从代码中抽象到树中。
  • 该研究旨在抽象出代码。
于 2019-10-24T02:21:06.793 回答