繁体   English   中英

Morphic中的Morph和可可中的NSView有什么区别?

[英]What is the difference between a Morph in Morphic and a NSView in Cocoa?

我想知道使Morphic特别的事物。

Morphic远远超过了NSView或任何其他仅允许重新实现一组有限功能的图形类。 Morphic是一个非常具有延展性的UI构造工具包。 Morphic背后的一些设计思想清楚地表明了这一意图:

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

警告:Smalltalk的动态环境是一个红色药丸 静态的冻结语言对您而言永远不会相同;-)

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

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

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

如果您想打定主意,请在变身世界中成为神:

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

    替代文字

  2. 在菜单选项之一上调出“晕轮”(在Mac上按住Shift键并单击鼠标): 替代文字

  3. 拖动“拾取”光晕(中上)并将其拖放到世界上的某个位置: 替代文字

  4. 享受需要的地方现在是可用的菜单项: 替代文字

认真地,单击它并观看浏览器打开!

曾经有你总是使用一个厂商都埋三菜单层次深的选项? 这有用吗? 这是对实时直接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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM