Cocos2d-x 3.3Bate0 ExpandedListView
之前写的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 );
}
效果:
Cocos2d-x 3.3Bate0 ExpandedListView的更多相关文章
- 小尝试一下 cocos2d
好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...
- 采用cocos2d-x lua 制作数字滚动效果样例
require "Cocos2d"require "Cocos2dConstants"local testscene = class("testsce ...
- Cocos2d 利用继承Draw方法制作可显示三维数据(宠物三维等)的三角形显示面板
很久没有写博客了,这段时间比较忙,又是搬家又是做自己的项目,还有太多琐碎的事情缠身,好不容易抽出时间把最近自己做的一些简单例子记录一下. 在我的项目中,我需要一个显示面板来显示游戏中的一个三维数据,例 ...
- iPhone开发与cocos2d 经验谈
转CSDN jilongliang : 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE.开发框架uikit,还有开 ...
- cocos2d学习记录
视频 - http://www.manew.com/forum-105-3.html一个论坛帖 - http://www.zhihu.com/question/21114802官网 - http:// ...
- Android下Cocos2d创建HelloWorld工程
最近在搭建Cocos2d的环境,结果各种问题,两人弄了一天才能搞好一个环境-! -_-!! 避免大家也可能会遇到我这种情况,所以写一个随笔,让大家也了解下如何搭建吧- 1.环境安装准备 下载 tadp ...
- 学生信息管理系统(cocos2d引擎)——数据结构课程设计
老师手把手教了两天半,看了一下模式,加了几个功能就大功告成了!!! 给我的感想就是全都是指针! 添加图片精灵: CCSprite* spBG = CCSprite::create("&qu ...
- cocos2d触碰例子代码
// // TestLayer.h // MiniTD // // Created by OnePiece on 12-7-30. // Copyright 2012年 __MyCompanyName ...
- 如何优化cocos2d程序的内存使用和程序大小
在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区里面的人 ...
随机推荐
- Android Exception 9(requestFeature() must be called before adding content)
08-05 17:36:12.799: W/System.err(10378): java.lang.reflect.InvocationTargetException08-05 17:36:12.7 ...
- UML for mac
今年苹果公司推出的iPhone4和iPad继续大获成功,国内想在苹果的平台下开发软件赚钱的开发人员越来越多.那么,在苹果的平台下开发软件有哪些UML建模工具可用呢?虽然不如Windows平台下那么多的 ...
- 一款实现浏览实事的资讯平台app
一款实现浏览实事的资讯平台app 如有转载,请注明出处:http://blog.csdn.net/u012301841/article/details/46687447 github链接:https: ...
- R语言的if-else
语法问题,类似于for函数使用时必须把"{"放在当前行,而不可以独占一行.R的特色. 具体你的这个问题可以尝试 x <- 5 if (x>0){ print(" ...
- 转:C#操作摄像头
转自: http://blog.csdn.NET/chenhongwu666/article/details/40594365 如有雷同,不胜荣幸,若转载,请注明 最近做项目需要操作摄像头,在网上百度 ...
- python selenium--常用函数1
新建实例driver = webdriver.Chrome() 1.通过标签属性Id查找元素 方法:find_element_by_id(element_id) 实例:driver.find_elem ...
- docker运行环境安装-后续步骤(二)
1.以非 root 用户身份管理 Docker [origalom@origalom ~]$ sudo groupadd docker # 创建docker用户组[origalom@origalom ...
- spring-cloud-config笔记
忽略元数据末尾 回到原数据开始处 spring-cloud-config 简单来讲就是spring-cloud实现的分布式配置中心.与之前介绍的开源配置服务方案 disconf是一样的,spring- ...
- nginx-1.2.7+tcp_proxy_module负载均衡配置
对于安装方面不清楚的,可移步 nginx + tcp_proxy_module的安装 参考nginx_tcp_proxy_module的readme文件,对每个定义项都做了详细的描述,tcp{...} ...
- SQL SERVER 2005中利用XML对字符串拆分的方法
1.常规方法(可运用于SQL SERVER 2000中) DECLARE @str varchar(1000) DECLARE @idoc int; DECLARE @doc xml;set @str ...