您的位置:首页 > 产品设计 > UI/UE

动作源码分析2Classes/ui/MainInterfaceUI.cpp

2015-06-02 12:54 585 查看
问题1:

ADD_UPDATE_UI宏将ui加入到一个内存池中。定时器会不断的刷新在内存池中得view。(GameUIManager::UIChange)中实现。

while (true)
{
bool is_exist = false;

for (int i = 0; i < uiPool.size(); i++)
{
if (!uiPool.at(i))
{
continue;
}

if (!uiPool.at(i)->getUIModel())
{
continue;
}

if (uiPool.at(i)->getUIModel()->getChange())
{
uiPool.at(i)->getUIModel()->setChange(false);

for (int j = 0; j < uiPool.size(); j++)
{
if (!uiPool.at(j))
{
continue;
}

if (!uiPool.at(j)->getUIModel())
{
continue;
}

if (uiPool.at(j)->getUIModel() == uiPool.at(i)->getUIModel())
{

uiPool.at(j)->dataChange();
}
}

is_exist = true;
break;
}
}

if (!is_exist)
{
break;
}
}


这里和下面的代码是不同的

for(int i = 0; i < uiPool.size(); i++)
{
if(uiPool[i]->getUIModel()->getChange() == true)
{
uiPool[i]->getUIModel()->setChange(true);
uiPool[i]->getUIModel()->dataChange();
}
}


是因为一个数据可以关联多个视图的

class/manager/TimeManager.cpp

这里启动了一个全局的定时器。

(1)异步加载图片资源

(2) 调度uichange

(3) 断线重连(这里有问题,是否加冷却时间?,验证)

uiType的名字起很不恰当,这里是维护一个可以自动弹出的ui的队列。可以更名为autoPopQueque,应该封装到另一个函数中去。

好吧,才进入我们的正题

我们来看第一个函数

init

leftInfoUi这个是控制左边哪些会定时刷新的界面,人物属性面板。

这个文件的主要作用可以找到各个按钮点击后由那个模块负责的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: