当前位置: 首页 > news >正文

998元网站建设优化贵阳企业网站排名优化

998元网站建设优化,贵阳企业网站排名优化,江阴做网站,北京公司网站建cocos2dx有一个编辑器#xff1a;cocostudio。眼下来说#xff0c;已经是比較好用了。仅仅要载入导出的资源。就能够用上了。省去手动搭建面的麻烦。可是。非常多须要事件的地方#xff0c;操作比較麻烦#xff0c;所以这里提供一个事件管理器来集中和简化管理事件。对于C事… cocos2dx有一个编辑器cocostudio。眼下来说已经是比較好用了。仅仅要载入导出的资源。就能够用上了。省去手动搭建面的麻烦。可是。非常多须要事件的地方操作比較麻烦所以这里提供一个事件管理器来集中和简化管理事件。对于C事件托付方面。我这里使用了是FastDelegate注一个牛人写的。以下是详细实现的代理不多。 /*UI触摸事件管理器。原有cocos2dx带的触摸事件每次监听要操作的步骤比較多为此添加了一个事件管理器。来集中和简化管理 */ #ifndef _X_TOUCH_EVENT_MANAGER_H_ #define _X_TOUCH_EVENT_MANAGER_H_ #include cocos2d.h #include cocos-ext.h #include FastDelegate.h #include xmap.h #include xlog.h namespace zdh {USING_NS_CC;USING_NS_CC_EXT;class XTouchEventManager : public CCObject{public://绑定的事件定义typedef fastdelegate::FastDelegatevoid(gui::Widget *, gui::TouchEventType) TTouchEvent;typedef int TagID_t;//一个Tag的触模事件结构包含了四个事件struct STagEvent{TTouchEvent EventBegin;TTouchEvent EventMoved;TTouchEvent EventEnded;TTouchEvent EventCanceled;TTouchEvent * getByType(gui::TouchEventType paramType){switch (paramType){case gui::TOUCH_EVENT_BEGAN:return EventBegin;case gui::TOUCH_EVENT_MOVED:return EventMoved;case gui::TOUCH_EVENT_ENDED:return EventEnded;case gui::TOUCH_EVENT_CANCELED:return EventCanceled;}return nullptr;}//推断事件是不是都是为空bool isAllEmpty() const{return EventBegin.empty() EventEnded.empty() EventMoved.empty() EventCanceled.empty();}};//Tag事件映射表。能够换用std::maptypedef XMapTagID_t, STagEvent TEventMap;public:XTouchEventManager():m_UI(nullptr){}static XTouchEventManager * create(){XTouchEventManager * pRet new XTouchEventManager();pRet-autorelease();return pRet;}//propertyvoid setUI(gui::TouchGroup * paramUI){m_UI paramUI;}gui::TouchGroup * getUI(){return m_UI;}//绑定一个指定Tag和事件类型的事件TTouchEvent * Bind(TagID_t paramTagID, gui::TouchEventType paramType){if (!(paramType gui::TOUCH_EVENT_BEGAN|| paramType gui::TOUCH_EVENT_CANCELED|| paramType gui::TOUCH_EVENT_ENDED|| paramType gui::TOUCH_EVENT_MOVED)) return nullptr;int iIndex m_Map.getIndexBykey(paramTagID);if (m_Map.isValidIndex(iIndex)){return m_Map.getValue(iIndex).getByType(paramType);}else{gui::Widget * pWidget GetNodeByTag(paramTagID);if (isNULL(pWidget)) return nullptr;pWidget-addTouchEventListener(this, gui::SEL_TouchEvent(XTouchEventManager::OnUITouch));return m_Map[paramTagID].getByType(paramType);}}//移除指定Tag和事件类型的侦听void RemoveListen(TagID_t paramTagID, gui::TouchEventType paramType){if (!(paramType gui::TOUCH_EVENT_BEGAN|| paramType gui::TOUCH_EVENT_CANCELED|| paramType gui::TOUCH_EVENT_ENDED|| paramType gui::TOUCH_EVENT_MOVED)) return;int iIndex m_Map.getIndexBykey(paramTagID);if (m_Map.isValidIndex(iIndex)){auto pV m_Map.getValue(iIndex);pV.getByType(paramType)-clear();if (pV.isAllEmpty()) //假设这个Tag全然没有事件侦听那么就清除这个Tag的侦听{RemoveListen(paramTagID);}}}//移除指定Tag的侦听void RemoveListen(TagID_t paramTagID){gui::Widget * pWidget GetNodeByTag(paramTagID);if (isNotNULL(pWidget)){pWidget-addTouchEventListener(nullptr, nullptr);}m_Map.RemoveByKey(paramTagID);}private://当UI被侦听的事件被触发void OnUITouch(CCObject* paramSender, gui::TouchEventType paramType){gui::Widget * pUIControl dynamic_castgui::Widget *(paramSender);if (isNULL(pUIControl)) return;TagID_t tagID pUIControl-getTag();STREAM_INFO Sender Tag tagID , paramType paramType;int iIndex m_Map.getIndexBykey(tagID);if (m_Map.isValidIndex(iIndex)){auto pV m_Map.getValue(iIndex);auto pEvent pV.getByType(paramType);if (isNotNULL(pEvent) (!pEvent-empty())){(*pEvent)(pUIControl, paramType); //调用事件}}}//取UI中指定Tag的widget对象gui::Widget * GetNodeByTag(TagID_t paramTag){if (isNULL(m_UI)) return nullptr;return m_UI-getWidgetByTag(paramTag);}private:gui::TouchGroup * m_UI; //用Cocostudio UI编辑器。然后导入生成的UI对象TEventMap m_Map; //事件侦听映射表}; } #endif 使用样例在Init函数 m_EventManager XTouchEventManager::create();m_EventManager-retain();gui::TouchGroup* ul gui::TouchGroup::create();ul-addWidget(GUIReader::shareReader()-widgetFromJsonFile(MainUI_1.ExportJson));this-addChild(ul, 2);m_EventManager-setUI(m_MainUI); 最后。事件绑定 m_EventManager-Bind(ET_BUTTON_EXIT, gui::TOUCH_EVENT_ENDED)-bind(this, XSceneMain::OnExit);m_EventManager-Bind(ET_BUTTON_SAVE, gui::TOUCH_EVENT_ENDED)-bind(this, XSceneMain::OnSave);事件的定义 void XSceneMain::OnExit(gui::Widget * paramSender, gui::TouchEventType paramType){STREAM_INFO OnExit;}void XSceneMain::OnSave(gui::Widget * paramSender, gui::TouchEventType paramType){STREAM_INFO OnSave;}依赖的代码參考我的开发代码
http://www.sadfv.cn/news/340528/

相关文章:

  • 做牛排的网站wap手机
  • 自己做网站卖二手车如何做地方门户网站
  • 连云港网站备案在哪wordpress 4.9.7 中文
  • 深圳企业网站建设开发费用hao123上网从这里开始
  • 怎么看到网站开发时间莱山做网站的公司
  • 有没有专门做平铺素材的网站wix怎样做网站
  • 虚拟网站源码电商网站建设需要哪些技术
  • wordpress多站点cdnwordpress链接速度慢
  • 在建设局网站备案怎么弄优化网站搭建
  • wordpress建站 网盘视频教程wordpress 添加版权
  • 怎么在百度上能搜到自己的网站wordpress前端用户
  • 百度有做企业网站吗作风建设年活动网站
  • 河北省建设银行网站首页购买域名后怎么建网站
  • php asp jsp 网站转发文章赚钱的网站建设
  • 自己建设个小网站要什么关于网站集约化建设的讲话
  • 专门做衣服特卖的网站wordpress 媒体库缩略图生成
  • 网站开发方式网站改版方案怎么写
  • 重庆seo网站管理世界500强企业分布
  • 网站制作公司昆明wordpress 小程序 插件
  • 水墨画风格网站学网站建设要多长时间
  • 百度关键字搜索到自己的网站罗村建网站
  • 网站怎么加留言淘宝关键词优化软件
  • 建站公司 转型经验福州专业网站建设价格
  • 盘锦市网站建设辽宁省建设工程执业信息网
  • 深圳集团网站建设专业公司天健emp软件开发平台
  • 找人做网站内容自己编辑吗wordpress 禁止加载js
  • 网站建设吉金手指排名13ui个人作品集网站
  • 定制网站开发价格wordpress循环分类子分类与文章
  • 乐清市网站建设服务自己做投票网站怎么弄
  • wordpress设置网站地图门户网站建设重要性