3

在three.js中,我創建了一個基本的「英雄創作」程序。類似於上古卷軸交換頭部,身體等,以創建一個完整的角色。我想讓其他用戶編輯同一個英雄,讓它更具互動性。每個用戶只會從服務器讀取相同的JSON文件。Three.js和MVC

爲了更好地構建我的代碼,我想使用MVC模式,但我對如何應用它感到困惑。 我認爲我所有的事件監聽器都是控制器,但View只是我的three.js render()而Model只是底層的JSON?特別是將MVC應用到這個圖形領域是我的大問題。如果這是非常糟糕的形式,你會有不同的模式/結構方式的建議嗎?

+0

你有沒有找到適合你的東西? – Noz 2013-06-23 04:12:39

+0

不幸的是,沒有。最後,我只是將我的代碼組織到模塊中。無論如何,當我獲得空閒時間時,webgl mvc框架可能是一個有趣的項目:) – jthompson 2013-07-01 12:17:51

回答

0

您可以使用MVC和橋接模式的組合。

在這種組合中,您可以抽象您的視圖並使用橋接模式,以允許您以多種不同格式創建視圖。

下面的鏈接可以幫助你:http://www.oodesign.com/bridge-pattern.html

0

很容易理解,你可以考慮一下:

var modelObject = {}; 
var viewObject = {}; 
var controllerObject = {}; 

modelObject.str = "Welcome"; 

viewObject.showStr = function(modelObject) { 
    console.log(modelObject.str); 
} 

controllerObject.handler = function() { 
    viewObject.showStr(modelObject); 
} 

您現在可以通過handleronclick或任何事件等調用函數,

通常模型是數據/數據源的抽象

1

視圖層應:

  • 內含呈現邏輯
  • 處理用戶輸入,並將其轉發到控制器層(使用策略模式)
  • 保持你three.js所對象同步於模型

控制器層應:

  • 處理用戶輸入並更新模型

模型是您的主要實體。他們不應該有任何three.js相關的功能。

我寫了一篇博客文章,詳細解釋瞭如何結合MVC和Three.js:http://hecodes.com/2016/07/using-mvc-pattern-for-building-complex-three-js-applications/

您可能會對此感興趣。