Cocos2d-X 使用CCTableView创建滚动视图
CCTableView和CCScrollView如创建滚动视图,CCTableView该函数将是更,制造更多麻烦
实例1:使用CCTableView创建滚动视图
首先创建一个TableView类
TableView.h中的代码
#ifndef __TableView_H__
#define __TableView_H__ #include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT; class TableView : public CCLayer, public CCTableViewDataSource, public CCTableViewDelegate
{
public:
virtual bool init(); static CCScene* scene(); CREATE_FUNC(TableView); //创建一个数组
CCArray* _arr; //返回格子的大小
virtual CCSize tableCellSizeForIndex(CCTableView *table, unsigned int idx)
{
return cellSizeForTable(table);
}; //每一个格子的大小
virtual CCSize cellSizeForTable(CCTableView *table)
{
//返回窗体的大小
return CCDirector::sharedDirector()->getWinSize();
} //返回格子的编号
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx)
{
return (CCTableViewCell*)_arr->objectAtIndex(idx);
} //返回滚动的大小(格子的个数)
virtual unsigned int numberOfCellsInTableView(CCTableView *table)
{
return _arr->count();
} virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{
CCLog("clicked cell is %d", cell->getIdx());
} virtual void scrollViewDidScroll(CCScrollView* view){};
virtual void scrollViewDidZoom(CCScrollView* view){};
}; #endif // __TableView_H__
TableView.cpp中的代码
#include "TableView.h" CCScene* TableView::scene()
{
CCScene *scene = CCScene::create(); TableView *layer = TableView::create(); scene->addChild(layer); return scene;
} bool TableView::init()
{
CCLayer::init(); CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCPoint center = ccp(winSize.width / 2, winSize.height / 2); //先创建好CCTableViewCell //创建一个数组
_arr = CCArray::create(); _arr->retain(); for(int i = 0; i < 5; i++)
{
CCTableViewCell* cell = new CCTableViewCell();
cell->autorelease();
_arr->addObject(cell); CCSprite* sprite = CCSprite::create("HelloWorld.png");
cell->addChild(sprite);
sprite->setPosition(center);
} //创建TableView
CCTableView* tableView = CCTableView::create(this, winSize);
addChild(tableView); //设置TableView的滚动方向
//kCCScrollViewDirectionHorizonta表示在水平方向上滚动
tableView->setDirection(kCCScrollViewDirectionHorizontal); //载入数据
tableView->reloadData(); tableView->setDelegate(this); return true;
}
运行结果:
实例2:使用CCTableView创建一个小窗体的滚动视图(该功能经常使用于游戏中的选择道具)
首先创建一个TableViewSmall类
TableViewSmall.h中的代码
#ifndef __TableViewSmall_H__
#define __TableViewSmall_H__ #include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT; class TableViewSmall : public CCLayer, public CCTableViewDataSource, public CCTableViewDelegate
{
public:
virtual bool init(); static CCScene* scene(); CREATE_FUNC(TableViewSmall); //创建一个数组
CCArray* _arr; //返回格子的大小
virtual CCSize tableCellSizeForIndex(CCTableView *table, unsigned int idx)
{
if(1 == idx)
{
return CCSizeMake(60, 40);
} return cellSizeForTable(table);
}; //每一个格子的大小
virtual CCSize cellSizeForTable(CCTableView *table)
{
//每一个格子的大小
return CCSizeMake(40, 40);
} //返回格子的编号
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx)
{
return (CCTableViewCell*)_arr->objectAtIndex(idx);
} //返回滚动的大小(格子的个数)
virtual unsigned int numberOfCellsInTableView(CCTableView *table)
{
return _arr->count();
} virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{
CCLog("clicked cell is %d", cell->getIdx());
} virtual void scrollViewDidScroll(CCScrollView* view){};
virtual void scrollViewDidZoom(CCScrollView* view){};
}; #endif // __TableViewSmall_H__
TableViewSmall.cpp中的代码
#include "TableViewSmall.h" CCScene* TableViewSmall::scene()
{
CCScene *scene = CCScene::create(); TableViewSmall *layer = TableViewSmall::create(); scene->addChild(layer); return scene;
} bool TableViewSmall::init()
{
CCLayer::init(); CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCPoint center = ccp(winSize.width / 2, winSize.height / 2); //先创建好CCTableViewCell //创建一个数组
_arr = CCArray::create(); _arr->retain(); for(int i = 0; i < 5; i++)
{
CCTableViewCell* cell = new CCTableViewCell();
cell->autorelease();
_arr->addObject(cell); CCSprite* sprite = CCSprite::create("CloseNormal.png");
cell->addChild(sprite);
sprite->setPosition(ccp(20, 20));
} //创建TableView
CCTableView* tableView = CCTableView::create(this, CCSizeMake(40 * 3, 40));
addChild(tableView); //设置TableView的滚动方向
//kCCScrollViewDirectionHorizonta表示在水平方向上滚动
tableView->setDirection(kCCScrollViewDirectionHorizontal); //载入数据
tableView->reloadData(); tableView->setDelegate(this); tableView->setPosition(center); return true;
}
运行结果:
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Cocos2d-X 使用CCTableView创建滚动视图的更多相关文章
- swift:创建滚动视图的图片轮播器
用swift创建图片轮播器和用OC创建的方式是一样的,都主要用到UIScrollView和UIImageview这两个控件,有几张图片,就将滚动视图的内容区域大小设置为每一张图片的大小乘以张数即可.然 ...
- Cocos2d-X采用CCScrollView创建滚动视图
CCScrollView滚动视图可以让游戏有效果,并能够通过滚动视图切换游戏场景,滚动视图通常用来选择在游戏中的级别 实例1:使用CCScrollView创建一个简单的滚动视图 首先创建一个Scrol ...
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文: http://blog.csdn.net/supermanking/article/detail ...
- cocos2dx基础篇(14) 滚动视图CCScrollView
[3.x] (1)去掉 "CC" (2)滚动方向 > CCScrollViewDirection 改为强枚举 ScrollView::Dire ...
- 滚动视图和页面控制UIScollView,UIpageControlDemo
//// ViewController.m// UIScollView//// Created by hehe on 15/9/25.// Copyright (c) 2015年 wang.h ...
- 制作滚动视图(ScrollView)
怎样判断是否应当使用滚动视图 所谓的滚动视图,是指一个可以滑动的视窗,视窗大小和位置固定不变,视窗内的内容用户可以通过手指滑动或者拖动滚动天来进行滚动浏览. 滚动视图的目的是为了解决同类内容过多,一个 ...
- Cocos2d-x学习笔记(14)(更新函数scheduleUpdate、进度计时器CCProgressTo、滚动视图CCScrollView)
一.scheduleUpdate 1.scheduleUpdate:此函数是CCNode的函数,每一个CCNode仅仅要调用scheduleUpdate更新函数,那么这个CCNode就会响应当前类的u ...
- iOS学习笔记——滚动视图(scrollView)
滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController<UIScro ...
- iOS关于菜单滚动视图实现
菜单滚动视图也是在项目开发过程中比较常用到的功能,先直接看效果图 实现的效果如下: 当菜单个数的总长度超过一个屏宽度就计算每一个的文字宽度,若没有则只进行一个屏平分,点击菜单项时,滚动的视图位置会随着 ...
随机推荐
- tudou link
http://www.tudou.com/programs/view/QdOktCIUfQ0/?tid=-1&aid=-120137222&pid=41050010&oid=2 ...
- Music Studio项目心得--JNI实现C++调用JAVA
这个项目是我參加内蒙古挑战杯的比赛项目,因为时间关系,我没时间实现OpenOMR开源项目由JAVA全然向C++的转换,经过我半个多月的尝试,我将OpenOMR中的1/3的代码改写成C++,只是非常快我 ...
- Android圆弧形ListView的实现
本文带大家来实现ListView的圆弧形的分布排列,原理非常easy,就是依据ListView的每个Item的高度来对每个item进行偏移. 首先自己定义一个LinearLayout,这是ListVi ...
- Linking Containers Together
Linking Containers Together In the Using Docker section we touched on connecting to a service runnin ...
- php中页面跳转部分方法论述
假设当前页面:http://localhost:80/index.php 1.include echo “include t1.php”; 跳转后,url地址栏http://localhost:80/ ...
- 十年linux命令总结
十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令 ...
- Resource temporarily unavailable用户的连接数设置的太小
-bash:fork:Resource temporarily unavailable的问题 出现这个问题的原因是linux用户的连接数设置的太小,只要修改max user processes就可 ...
- Webserver管理系列:1、安装Windows Server 2008
简单了解下server: 1U: 2U: 3U: 在安装Windows Server 2008之前我们先了解下Windows Server 2008: Windows Server 2008是微软一个 ...
- JS经常使用正則表達式【分享】
工作中JS经常使用表达式: 1)2010-09-10类型日期校验 2)推断正整数.字符串长度 3)校验长度,和是否空 4)推断字符串是否为空 5)比較字符大小 6)推断字符串长度 7)推断格式是否为E ...
- WPF换肤之六:酷炫的时区浏览小精灵
原文:WPF换肤之六:酷炫的时区浏览小精灵 由于工作需要,经常要查看到不同地区的 当前时间,以前总是对照着时区表来进行加减运算,现在有了这个小工具以后,感觉省心了不少.下面是软件的截图: 效果图赏析 ...