我一直在阅读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