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关于菜单滚动视图实现
菜单滚动视图也是在项目开发过程中比较常用到的功能,先直接看效果图 实现的效果如下: 当菜单个数的总长度超过一个屏宽度就计算每一个的文字宽度,若没有则只进行一个屏平分,点击菜单项时,滚动的视图位置会随着 ...
随机推荐
- 服务器编程入门(2)IP协议详解
问题聚焦: IP协议是TCP/IP协议族的核心协议,也是socket网络编程的基础之一.这里从两个方面较为深入地探讨IP协议: 1,IP头部信息(指定IP通信的源端IP地址,目的端IP ...
- LNK1207: incompatible PDB format in********
LNK1207: incompatible PDB format in******** VC中错误:LINK : fatal error LNK1207: incompatible PDB forma ...
- poj1935(树形dp)
题目链接:http://poj.org/problem?id=1935 题意:带边权的树,给点一个根,问从根出发遍历某些点,所需的最小花费. 分析:树上任意两点的路径是唯一的,直接dfs一遍,可以得出 ...
- linux中怎样设置DHCP
linux怎样设置DHCP 环境:RH linux 9.0 使用linux下经常使用的dhcpd包. 最新版本号 dhcp3.0.5 下载地址: 下载 1.安装: 先拷贝dhcp-3.0.5.tar. ...
- tomcat开始批量——setclasspath.bat
除了上述两批,另一个重要的脚本,那是,setclasspath.bat.它主要负责查找.检查JAVA_HOME和JRE_HOME两个变量. ****************************** ...
- gdb学习(一个)[再版]
概要 gdb是GNU debugger的缩写,是编程调试工具. 功能 1.启动程序,能够依照用户自己定义的要求随心所欲的执行程序. 2.可让被调试的程序在用户所指定的断点处停住 (断点能够是条件表达式 ...
- 简单的java mail发送邮件实例
mail.jar ,commons-email-X.X.jar ,activation.jar ,log4j.jar 这四个jar,放进项目里 下载地址 http://www.oracle.com/ ...
- 用XAML做网页!!—框架
原文:用XAML做网页!!-框架 上一篇中我进行了一下效果展示和概述,此篇开始将重现我此次尝试的步骤,我想大家通过阅读这些步骤,可以了解到XAML网页排版的方法. 下面就开始编写XAML,首先来定义一 ...
- 【SSH 基础】浅谈Hibernate关系映射(4)
继上篇博客 多对多关联映射(单向) 多对多对象关系映射,须要增加一张新表完毕基本映射. Hibernate会自己主动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多 ...
- WPF遮蔽层的实现
在一些项目中,难免会有耗时的加载,如果加载时没有提示,给人一种假死的感觉,很不友好,那么现在福利来啦,WPF版的模态窗体,先上效果图 实际效果指针是转动的,话不多说,一大批干货来袭 XMAL的代码 W ...