簡體   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