UI引擎开发系列(四) 消息机制

来源:互联网 发布:director.js 编辑:程序博客网 时间:2024/05/21 11:31

自定义消息的控制

#pragma once#include "Component/CTSingleton.h"#include "Component/CBaseView.h"#include "Component/CViewNodeGroup.h"#include "CUIViewNode.h"#include "IMessageListener.h"using namespace tcl;//Home viewclass CHomeView : public CViewNodeGroup,public CTSingleton<CHomeView>, public IMessageListener{public:CHomeView();//当某一个View获取focus时,执行onGetFocus,丢失focus时执行onLoseFocusvirtual void onGetFocus();virtual void onLoseFocus();private://主页面的页面切换动画CAnimationPlayer* m_pHomeAnmPlayer;//子view列表core::array<CUIViewNode*> m_ViewNodes;ISceneNode* m_pTitleFocus;ISceneNode* m_pTitle;ISceneNode* m_HomeParent;//消息的接收与处理函数,源自何方,主题是什么,处理的参数        virtual strArray onMessage(core::stringc from,core::stringc subject, strArray& param);//单例实现CT_DECLARE_SINGLETON(CHomeView)};



消息处理的例子,更新天气

//CHomeView接受消息strArray CHomeView::onMessage(core::stringc from,core::stringc subject, strArray& param){strArray ret;//如果标题是设置天气纹理 而且有参数if(subject == "SetWeatherTexture" && param.size()>0){//通过这个接口,获取已存在的纹理为智能指针TexturePtr weatherptr = TextureGen::getTexture(param[0]);//获取纹理需要贴的那个物体ISceneNode* title = CommonTools::getISceneNodeByName("01001");//如果纹理物体都没问题,就贴在物体的第0层上if(weatherptr && title){title->setMaterialTexture(0,weatherptr);}}return ret;}



0 0
原创粉丝点击