关于萌熊跑酷的MVC框架
我想问问控制器发事件,就是在C#中,我发送事件了,他是怎么执行的,百度的框架图中有一条线是从模型指向视图,这是发送事件,也就是说我从模型发送事件给视图,视图接收后怎么执行?可以的话希望老师能列举具体的事件说明一下,被发送的事件,怎么执行,发送的是什么,还有为什么每个控制器只对应一个事件(因为一些原因目前只是把萌熊跑酷的框架那部分学完了,没有继续往下看,现在很纠结框架的核心思想)
思绪很乱,上面基本可以算是一个问题吧,还有就是我陈述一下目前我对MVC框架的了解,希望老师看一下对错
视图的功能就是能做到一个完整的游戏进程,通过框架拿到自己想要的模型,进而根据已有模型来达到改变的状态
控制器就是执行事件,能改视图和模型
模型就是存游戏数据的,控制器改变了模型就改视图
老师看一下揪下错,谢谢
问题1:发送事件决定谁来执行主要看MVC这个函数
//发送事件
public static void SendEvent(string eventName,object data = null) {
//controller执行
if (CommandMap.ContainsKey(eventName)) {
Type t = CommandMap[eventName];
//控制器生成
Controller c = Activator.CreateInstance(t) as Controller;
c.Execute(data );
}
//view处理
foreach (var v in Views.Values) {
if (v.AttentionList.Contains(eventName)) {
//执行
v.HandleEvent(eventName,data);
}
}
}
一旦确定视图的AttentionList里边有这个关心事件,就会执行HandleEvent(eventName,data) 这个函数。
举个例子,在UIBoard里边,HandleEvent可以处理很多对应的事件。
public override void HandleEvent(string name, object data)
{
switch (name)
{
case Consts.E_UpdataDis:
DistanceArgs e1 = data as DistanceArgs;
Distance = e1.distance;
break;
case Consts.E_UpdateCoin:
CoinArgs e2 = data as CoinArgs;
Coin += e2.coin;
break;
case Consts.E_HitAddTime:
Times += 20;
break;
case Consts.E_HitGoalTrigger:
ShowGoalClick();
break;
case Consts.E_ShootGoal:
m_GoalCount += 1;
print("进了"+m_GoalCount + "球");
break;
}
}
当要更新金币UI显示时,接收到的事件是E_UpdateCoin,
所以只要执行
CoinArgs e2 = data as CoinArgs;
Coin += e2.coin;
这个就好
问题2:基本对,视图不太准确。
Model,主要是数据、业务逻辑和业务规则。相对而言,这是MVC中比较稳定的部分,一般成品后不会改变。
View是指视图,也就是呈现给用户的一个界面,是model的具体表现形式,也是收集用户输入的地方。
Contorller指的是控制器,主要负责与model和view打交道。它决定使用哪些Model,对Model执行什么操作,为视图准备哪些数据,是MVC中沟通的桥梁。