我一直在閱讀MVC,並一直試圖按照我的能力盡力去做,但有一件事情不斷涌現。在MVC中,View允許查看但不與模型交談?
視圖能看到模型對象嗎?
我目前的遊戲結構如下。
對象(模型)< - >場景(控制器)< - >精靈(查看)
目前我做到以下幾點。
場景創建MapObject(模型)。場景然後創建一個MapSpriteNode(視圖),但用MapObject初始化它。 MapSpriteNode需要繪製和使用信息來佈置其視圖和子視圖。現在MapSpriteNode可以保存對該MapObject的引用,但不允許改變MapObject。這樣,當在MapSpriteNode上調用更新時,它可以看到MapObject上的髒圖索引等事情,並且可以更新其相應的TileNodes。
所以,現在出現這種情況
雪碧被觸摸,並通知控制器 - >控制器報告交互模式 - >模型相應地更新,標誌着髒指標
更新循環發生
場景需要更新到 - > MapObject的(需要發生隨着時間的推移任何其他更新) 場景需要更新 - > MapSpriteNode(查看是否有骯髒的索引和更新) 場景需要清理髒 - > MapObject的(骯髒的指標,因爲去除渲染是d一個)
這是否仍然遵循MVC?
謝謝你的回答。這是我第一次聽說「被動」的實施。你有沒有一個好的聯繫,你覺得做一個很好的工作來澄清「被動」和非被動之間的區別?我也有關於MVC和具體SpriteKit另一個問題,如果有關MVC感興趣http://gamedev.stackexchange.com/questions/96662/do-features-of-spritekit-follow-mvc – 2015-03-18 23:25:29
維基百科的文章解釋了它。當您將多個視圖和控制器綁定到單個模型時,通常會使用活動MVC。在這種情況下,在其中一個控制器更新模型後,所有視圖也必須更新。爲了做到這一點,Model必須通過Observer模式的使用來通知他們。 – 2015-03-25 11:55:44