我想了解使Morphic特殊的事情。
我想了解使Morphic特殊的事情。
Morphic不仅仅是NSView或其他仅允许重新实现有限功能的图形类。Morphic是一个非常具有可塑性的UI构建工具箱。Morphic背后的一些设计思想使这个意图很明显:
#drawOn:
方法和其子morph的位置是以其自己的坐标系表示的。警告:Smalltalk的动态环境是一颗red pill。静态、冰封的语言将永远不会再给你带来相同的体验;-)
简而言之:Morphic是一个虚拟世界,在这里你可以直接探索活动对象(就像现实世界一样)。你是否曾看过一个用户界面并...
在任何其他环境中,这些想法都会导致痛苦和沮丧,但在Morphic中不是这样。
如果您想要激起灵感,在Morphic世界成为一个神:
启动Pharo镜像,然后单击背景(实际上是“世界”),以打开世界菜单:
在其中一个菜单选项上带出“halos”(在我的Mac上为shift-alt-click):
拖动“Pick Up”halo(顶部中间),并将其放置在世界的某个位置:
享受您的菜单项目,现在它可以在任何您想要的地方使用:
说真的,点击它并观看浏览器的打开!
是否曾经有过一个选项,您总是使用,但供应商却将其埋藏在三级菜单深处?这可能有用吗?这是直接GUI环境(如Morphic)的强大力量的一瞥。
如果您感到好奇,请阅读约翰·马洛尼和兰德尔·史密斯的论文《Morphic用户界面构建环境中的直接性和活力》。
标题与您的问题不符,所以我回答您的问题而不是标题。
我最近两天阅读了有关Morphic的资料,并得出了我认为使Morphic特殊的东西。
Morphic非常适合实时编码。这是一种直接映射,当代码更改时,屏幕上的输出也会更改。如果在屏幕上更改(拖动)morphs,则代码中的值也会更改。这在艺术表演中很酷!
但是,Morphic的目标是比这更高的抽象层次。morphs的属性从代码中抽象出来。将其SoC到文件或获取服务器端数据库。
我想WebStorage和JavaScript文件是存储交互式更改的Morph属性的活力状态的好选择。您看 - 编程是通过每个Morph完成的。然后,代码只需要处理来自单击和拖动的事件。
研究的目标甚至将代码抽象化了。编码可以通过Morph来定义点击或拖动时发生的事情。Morphs可以像Scratch中的拼图一样组合起来。
程序必须备份到某个文件中。我不认为在云上进行编码是安全的。因此,JS文件是唯一的选择(如果不设置服务器的话),因为数据文件不允许本地使用,甚至不能与Web应用程序位于同一文件夹中。同源策略意味着相同的服务器-而不是相同的文件夹。
当应用程序启动JavaScript文件(或Web Storage)时,它将设置Morphs的世界。用户与该世界交互。新状态可以存储在WebStorage中,并通过下载进行备份。
您可以使用Lively Kernel作为文件中的语言,或将形态数据存储在对象中,或者您发现最简单的方式是生成要下载的文件。