Cocos2d-x 3.3Bate0 ExpandedListView
来源:互联网 发布:美国女键盘手走红网络 编辑:程序博客网 时间:2024/06/05 06:40
之前写的ExpandedListView版本由于版本升级这里提供Cocos2d-x 3.3Bate0 版本
代码下载:http://download.csdn.net/detail/qqmcy/8033343
下面介绍下如何使用。
先介绍下
DJDataObject存放数据模型的类
DayReportListAdapter 自定义的adapter或是iOS中的cell
ListViewTest 示例类。
下面上代码啦
DJDataObject.h
//// DJDataObject.h// testthirdone//// Created by 杜甲 on 14-6-7.////#ifndef __testthirdone__DJDataObject__#define __testthirdone__DJDataObject__#include "cocos2d.h"USING_NS_CC;class DJDataObject :public Ref{ public: CREATE_FUNC(DJDataObject); virtual bool init(); std::string name; std::vector<DJDataObject*> children; void initWithNameAndChildren(std::string name,std::vector<DJDataObject*> data_vec); };#endif /* defined(__testthirdone__DJDataObject__) */
DJDataObject.cpp
//// DJDataObject.cpp// testthirdone//// Created by 杜甲 on 14-6-7.////#include "DJDataObject.h"bool DJDataObject::init(){ bool bRet = false; do { bRet = true; } while (0); return bRet;}void DJDataObject::initWithNameAndChildren(std::string name,std::vector<DJDataObject*> data_vec){ this->name = name; this->children = data_vec; }
DayReportListAdapter.h
//// DayReportListAdapter.h// //// Created by 杜甲 on 14-6-4.////#ifndef __ht_mobile_cpp__DayReportListAdapter__#define __ht_mobile_cpp__DayReportListAdapter__#include "cocos2d.h"#include "ui/CocosGUI.h"#include "DJTreeNodeInfo.h"USING_NS_CC;class DayReportListAdapter :public ui::Layout{ public: CREATE_FUNC(DayReportListAdapter); virtual bool init(); ui::Text* organName; ui::Text* prem_day; ui::Text* prem_month; ui::ImageView* in_Image; void setBackGround(int treeDepthLevel); Vec2 preVec2; float preOffsetX; typedef std::function<void(Ref*, Vec2 offset_vec2)> ccAdapterCallback; void addEventListener(const ccAdapterCallback& callback); ccAdapterCallback _eventCallback; bool isMoving_HORIZONTAL; Size winSize; };#endif /* defined(__ht_mobile_cpp__DayReportListAdapter__) */
DayReportListAdapter.cpp
//// DayReportListAdapter.cpp// //// Created by 杜甲 on 14-6-4.////#include "DayReportListAdapter.h"#include "VisibleRect.h"bool DayReportListAdapter::init(){ bool bRet = false; do { CC_BREAK_IF(!ui::Layout::init()); setLayoutType(cocos2d::ui::Layout::Type::RELATIVE); setBackGroundColorType(ui::Layout::BackGroundColorType::SOLID); winSize = Director::getInstance()->getWinSize(); setTouchEnabled(true); float topLength = 30; in_Image = ui::ImageView::create("CloseNormal.png"); in_Image->setScale(VisibleRect::getImageScale()); in_Image->setTouchEnabled(true); addChild(in_Image); auto rp_image = ui::RelativeLayoutParameter::create(); rp_image->setRelativeName("rp_image"); float offset = -in_Image->getContentSize().width * 2/3 *(1- VisibleRect::getImageScale()); rp_image->setMargin(ui::Margin(-in_Image->getContentSize().width * 2/3 *(1- VisibleRect::getImageScale()),0,0,0)); rp_image->setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::PARENT_LEFT_CENTER_VERTICAL); in_Image->setLayoutParameter(rp_image); organName = ui::Text::create(); organName->setFontSize(38 * VisibleRect::getImageScale()); organName->setColor(Color3B::BLACK); addChild(organName); auto rp_organName = ui::RelativeLayoutParameter::create(); rp_organName->setRelativeName("rp_organName"); rp_organName->setRelativeToWidgetName("rp_image"); rp_organName->setMargin(ui::Margin(1 * VisibleRect::getImageScale() + offset,topLength,0,0)); rp_organName->setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::LOCATION_RIGHT_OF_CENTER); organName->setLayoutParameter(rp_organName); prem_month = ui::Text::create(); prem_month->setFontSize(38 * VisibleRect::getImageScale()); prem_month->setTextHorizontalAlignment(cocos2d::TextHAlignment::LEFT); prem_month->setColor(Color3B::BLACK); addChild(prem_month); auto rp_prem_month = ui::RelativeLayoutParameter::create(); rp_prem_month->setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::PARENT_TOP_RIGHT); rp_prem_month->setRelativeName("rp_prem_month"); rp_prem_month->setMargin(ui::Margin(0,topLength,50*VisibleRect::getImageScale(),0)); prem_month->setLayoutParameter(rp_prem_month); auto center = ui::Layout::create(); center->setSize(Size(1, 1)); addChild(center); auto rp_center = ui::RelativeLayoutParameter::create(); rp_center->setRelativeName("rp_center"); rp_center->setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::CENTER_IN_PARENT); center->setLayoutParameter(rp_center); prem_day = ui::Text::create(); prem_day->setTextHorizontalAlignment(cocos2d::TextHAlignment::LEFT); prem_day->setFontSize(38 * VisibleRect::getImageScale()); prem_day->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT); prem_day->setSize(Size(100, 50)); prem_day->setColor(Color3B::BLACK); addChild(prem_day); auto rp_prem_day = ui::RelativeLayoutParameter::create(); rp_prem_day->setRelativeToWidgetName("rp_center"); rp_prem_day->setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::PARENT_TOP_CENTER_HORIZONTAL); // rp_prem_day->setRelativeToWidgetName("rp_prem_month"); rp_prem_day->setMargin(ui::Margin(30,topLength,0,0)); prem_day->setLayoutParameter(rp_prem_day); auto bottom_color = ui::Layout::create(); bottom_color->setSize(Size(winSize.width, 1)); bottom_color->setBackGroundColorType(ui::Layout::BackGroundColorType::SOLID); bottom_color->setBackGroundColor(Color3B::BLACK); addChild(bottom_color); auto rp_bottom_color = ui::RelativeLayoutParameter::create(); rp_bottom_color->setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::PARENT_BOTTOM_CENTER_HORIZONTAL); rp_bottom_color->setMargin(ui::Margin(0,0,0,1)); bottom_color->setLayoutParameter(rp_bottom_color); bRet = true; } while (0); return bRet;}void DayReportListAdapter::setBackGround(int treeDepthLevel){ log("treeDepthLevel = %d",treeDepthLevel); switch (treeDepthLevel) { case 0: setBackGroundColor(Color3B(209, 238, 252)); break; case 1: setBackGroundColor(Color3B(224, 248, 216)); break; case 2: break; default: break; }}void DayReportListAdapter::addEventListener(const ccAdapterCallback &callback){ _eventCallback = callback; }
ListViewTest.h
//// ListViewTest.h// testthirdone//// Created by 杜甲 on 14-6-9./////* * 示例Demo */#ifndef __testthirdone__ListViewTest__#define __testthirdone__ListViewTest__#include "cocos2d.h"#include "ui/CocosGUI.h"#include "DJDataObject.h"#include "DJListView.h"USING_NS_CC;using namespace ui;class ListViewTest : public ui::Layout , public DJListViewDataSource , public DJListViewDelegate{public: CREATE_FUNC(ListViewTest); virtual bool init(); private: std::vector<DJDataObject*> data_vec; virtual ssize_t treeViewNumberOfChildrenOfItem(DJListView *treeView , void *item) ; virtual ui::Layout *treeViewAndCellForItemAndTreeNodeInfo(DJListView *treeView , void *item , DJTreeNodeInfo *treeNodeInfo); virtual void* treeViewAndChildOfItem(DJListView *treeView , int index , void *item); Size winSize; virtual void treeViewWillDisplayCellForItemTreeNodeInfo(DJListView *treeView , ui::Layout *adapter , void *item , DJTreeNodeInfo *treeNodeInfo) ; };#endif /* defined(__testthirdone__ListViewTest__) */
ListViewTest.cpp
//// ListViewTest.cpp// testthirdone//// Created by 杜甲 on 14-6-9.////#include "ListViewTest.h"#include "DJTreeNode.h"#include "DJTreeNodeInfo.h"#include "DayReportListAdapter.h"bool ListViewTest::init(){ bool bRet = false; do { CC_BREAK_IF(!ui::Layout::init()); winSize = Director::getInstance()->getWinSize(); setBackGroundColorType(ui::Layout::BackGroundColorType::SOLID); setBackGroundColor(Color3B(18, 23, 222)); std::vector<DJDataObject*>temp1; std::vector<DJDataObject*>temp2; std::vector<DJDataObject*>temp3; std::vector<DJDataObject*>temp4; DJDataObject* data7 = DJDataObject::create(); data7->retain(); //initWithNameAndChildren 参数1:当前数据内容, 参数2 :子集 data7->initWithNameAndChildren("数据1-1-1", temp4); temp1.push_back(data7); DJDataObject* data3 = DJDataObject::create(); data3->retain(); data3->initWithNameAndChildren("数据1-1", temp1); DJDataObject* data4 = DJDataObject::create(); data4->retain(); data4->initWithNameAndChildren("数据1-2", temp4); for (int i = 0; i < 7; i++) { DJDataObject* data6 = DJDataObject::create(); data6->retain(); data6->initWithNameAndChildren("数据h", temp3); temp2.push_back(data6); } DJDataObject* data1 = DJDataObject::create(); data1->retain(); data1->initWithNameAndChildren("数据r", temp2); DJDataObject* data = DJDataObject::create(); data->retain(); std::vector<DJDataObject*>temp; temp.push_back(data3); temp.push_back(data4); data->initWithNameAndChildren("数据12", temp); data_vec.push_back(data); data_vec.push_back(data1); auto winSize = Director::getInstance()->getWinSize(); auto listView1 = DJListView::create(); listView1->setDJListViewDataSource(this); listView1->setDJListViewDelegate(this); listView1->setSize(winSize); listView1->addExpandedListView(data_vec); addChild(listView1); bRet = true; } while (0); return bRet;}void ListViewTest::treeViewWillDisplayCellForItemTreeNodeInfo(DJListView *treeView, ui::Layout *adapter, void *item, DJTreeNodeInfo *treeNodeInfo){ if (treeNodeInfo->treeDepthLevel == 0) { adapter->setBackGroundColor(Color3B(150, 100, 200)); }else if (treeNodeInfo->treeDepthLevel == 1) { adapter->setBackGroundColor(Color3B(100, 100, 100)); }else if (treeNodeInfo->treeDepthLevel == 2) { adapter->setBackGroundColor(Color3B(100, 150, 150)); } }ssize_t ListViewTest::treeViewNumberOfChildrenOfItem(DJListView *treeView , void *item){ if (item == nullptr) { return data_vec.size(); } DJDataObject* data = static_cast<DJDataObject*>(item); return data->children.size();}ui::Layout* ListViewTest::treeViewAndCellForItemAndTreeNodeInfo(DJListView *treeView , void *item , DJTreeNodeInfo *treeNodeInfo){ DJDataObject* dobject = static_cast<DJDataObject*>(item) ; auto tableLayout1 = DayReportListAdapter::create(); tableLayout1->setSize(Size(winSize.width, 100)); tableLayout1->setBackGroundColorType(ui::Layout::BackGroundColorType::SOLID);// tableLayout1->setBackGround(treeNodeInfo->treeDepthLevel);// tableLayout1->setBackGroundColor(Color3B(189, 203, 222));// listView->pushBackCustomItem(tableLayout1); tableLayout1->organName->setString(dobject->name); tableLayout1->prem_day->setString(StringUtils::format("%d",333)); tableLayout1->prem_month->setString("fffff"); return tableLayout1;}void* ListViewTest::treeViewAndChildOfItem(DJListView *treeView , int index , void *item){ DJDataObject* data = static_cast<DJDataObject*>(item); if (item == nullptr) { return data_vec.at( index ); } return data->children.at( index );}
效果:
0 0
- Cocos2d-x 3.3Bate0 ExpandedListView
- 【cocos2d-x】quick-cocos2d-x 3.3final 发布
- cocos2d-x学习之3.3
- cocos2d-x-3.3rc2 字体
- cocos2d-x-3.3rc2 定时器
- cocos2d-x 3.3之学习
- Cocos2d-x
- cocos2d-x
- cocos2d-x
- cocos2d-x
- cocos2d-x
- cocos2d-x
- cocos2d-x
- cocos2d-x
- Cocos2d-X
- cocos2d-x
- cocos2d-x
- Cocos2d-x
- cocos2d中的设计模式
- 第七周项目三计算一名员工的周工资
- Linux指定动态库搜索路径
- Android--基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- 4.4.2 绘制图形
- Cocos2d-x 3.3Bate0 ExpandedListView
- C语言基础课程 第四课 它山之石可以攻玉---C语言数据类型和表达式
- linux 磁盘格式,磁盘挂载,及格式化
- ORACLE用SYS登录报ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER解决方法
- HTTPS 能否避免流量劫持?
- Python实现日志记录功能--样例
- HDU 3579 Hello Kiki 中国剩余定理 不互质情况
- SecureCRT 使用技巧
- hadoop-hive-hive多个实例