cocos2d-x-2.0 ListView使用
来源:互联网 发布:nicelabel数据库 编辑:程序博客网 时间:2024/05/21 06:16
转载自Cocos2D开发网--Cocos2Dev.com
原文地址: http://www.cocos2dev.com/?p=256
我在上一篇文章中介绍了CCControlSlider、CCControlSwitch、CCControlColourPicker的用法,现在把listView也讲解一下。由于cocos2d-x没有给出例子,所以代码有点长。我都写了注释,应该很容易理解。
ListViewTestLayer.h头文件
//// ListViewTestLayer.h// 2dxDemo//// Created by Yanghui Liu on 12-6-26.// Copyright (c) 2012年 BoyoJoy. All rights reserved.// #ifndef _dxDemo_ListViewTestLayer_h#define _dxDemo_ListViewTestLayer_h #include "cocos2d.h"#include "CCListView.h"#include <list.h>#include <string.h> USING_NS_CC;using namespace cocos2d::extension; class ListViewTestLayer : public CCLayer , public CCListViewDelegate {public:ListViewTestLayer();~ListViewTestLayer();virtual bool init();LAYER_NODE_FUNC(ListViewTestLayer);virtual void visit();public:// 继承自CCListViewDelegate所需要实现的方法virtual void CCListView_numberOfCells(CCListView *listView, CCListViewProtrolData *data);virtual void CCListView_cellForRow(CCListView *listView, CCListViewProtrolData *data);virtual void CCListView_didClickCellAtRow(CCListView *listView, CCListViewProtrolData *data);virtual void CCListView_didScrollToRow(CCListView *listView, CCListViewProtrolData *data); private://显示list的状态的一个lableCCLabelTTF *m_InfoLabel;private:// 存放的List数据std::list<std::string> *m_pDataList;CCListView *m_pListView;//是否刷新,即reloadbool m_bFresh;void initData();};#endif
cpp的实现:
//// ListViewTestLayer.cpp// 2dxDemo//// Created by Yanghui Liu on 12-6-26.// Copyright (c) 2012年 BoyoJoy. All rights reserved.// #include "ListViewTestLayer.h"#include "CCListViewCell.h" ListViewTestLayer::ListViewTestLayer(){} ListViewTestLayer::~ListViewTestLayer(){} void ListViewTestLayer::initData(){m_bFresh = true;CCSize winSize = CCDirector::sharedDirector()->getWinSize();m_pDataList = new std::list<std::string>;for (int i=0; i<15; i++) {char info[20];sprintf(info, "My Cell %d", i);m_pDataList->push_back(info);}// 初始化控件ListViewCCListView *listView = CCListView::viewWithMode(CCListViewModeVertical);listView->setContentSize( CCSizeMake(winSize.width * .5, winSize.height));listView->setDelegate(this);listView->setPosition(CCPointZero);this->addChild(listView);m_pListView = listView;// 初始化控件Label,显示ListView信息m_InfoLabel = CCLabelTTF::labelWithString("Info", "", 32);m_InfoLabel->setPosition(ccp(winSize.width * .8, winSize.height *.1));this->addChild(m_InfoLabel);} //visit方法会在每一帧的时候调用,也可以自己注册schedulevoid ListViewTestLayer::visit(){CCLayer::visit();if (m_bFresh) {m_pListView->reload();m_bFresh = false;}} //返回行数void ListViewTestLayer::CCListView_numberOfCells(cocos2d::extension::CCListView *listView, cocos2d::extension::CCListViewProtrolData *data){data->nNumberOfRows = m_pDataList->size();} //构造每一个cellvoid ListViewTestLayer::CCListView_cellForRow(cocos2d::extension::CCListView *listView, cocos2d::extension::CCListViewProtrolData *data){CCSize listSize = m_pListView->getContentSize();CCSize cellSize = CCSizeMake(listSize.width, listSize.height / 5);CCListViewCell *cell = CCListViewCell::node();cell->setOpacity(0);cell->setContentSize(cellSize);//cell选中颜色cell->setSelectionColor(ccc4(0, 255, 0, 255));data->cell = cell;std::list<std::string>::iterator it = m_pDataList->begin();for (int i=0; i<data->nRow; ++i) {++it;}CCLabelTTF *cellLabel = CCLabelTTF::labelWithString(((std::string) *it).c_str(), "Arial", 32);cellLabel->setPosition(ccp(cellSize.width / 2, cellSize.height / 2));cell->addChild(cellLabel);} //cell被选中void ListViewTestLayer::CCListView_didClickCellAtRow(cocos2d::extension::CCListView *listView, cocos2d::extension::CCListViewProtrolData *data){char info[100];sprintf(info, "No. %d Row", data->nRow);m_InfoLabel->setString(info);} //listView在滑动中void ListViewTestLayer::CCListView_didScrollToRow(cocos2d::extension::CCListView *listView, cocos2d::extension::CCListViewProtrolData *data){m_InfoLabel->setString("Scrolling...");} bool ListViewTestLayer::init(){if (!CCLayer::init()) {return false;}initData();return true;}
调用方法:
//list view
ListViewTestLayer *listViewDemoLayer = ListViewTestLayer::node();
addChild(listViewDemoLayer);
- cocos2d-x-2.0 ListView使用
- cocos2d-x-2.0 ListView使用
- cocos2d-x-2.0 ListView使用
- cocos2d-x-2.0 ListView使用(转)
- cocos2d-x lua 使用ListView
- cocos2d-x ListView列表
- cocos2d-x 3.0 PageView、ListView
- 【cocos2d-x】cocos2d-x 2.0.1 使用的一些心得
- Cocos2d-x--使用Cocos2d-x v3.0.0
- cocos2d-x CCTextureCache使用
- Cocos2d-x使用SQLite
- cocos2d-x RTTI使用
- cocos2d-x 使用断言
- cocos2d-x 使用plugin
- Cocos2d-X tolua++ 使用
- cocos2d-x jsonCpps使用
- cocos2d-x 使用 CCScale9Sprite
- cocos2d-x CCEditBox使用
- 多传感器遥感图像融合
- UNICODE,GBK,UTF-8区别
- UVA 10564 Paths through the Hourglass
- 实现遮蔽罩弹出窗体功能
- oracle if exists()
- cocos2d-x-2.0 ListView使用
- jQuery插件开发全解析
- 17家中国初创公司的失败史
- UVA 10534 Wavio Sequence
- 揭露MyEclipse JVM内存不足的内幕
- ffmpeg参数详解
- SQLite简单教程
- Linux中断详解
- javascript高级(1)