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创建滚动视图的更多相关文章

  1. swift:创建滚动视图的图片轮播器

    用swift创建图片轮播器和用OC创建的方式是一样的,都主要用到UIScrollView和UIImageview这两个控件,有几张图片,就将滚动视图的内容区域大小设置为每一张图片的大小乘以张数即可.然 ...

  2. Cocos2d-X采用CCScrollView创建滚动视图

    CCScrollView滚动视图可以让游戏有效果,并能够通过滚动视图切换游戏场景,滚动视图通常用来选择在游戏中的级别 实例1:使用CCScrollView创建一个简单的滚动视图 首先创建一个Scrol ...

  3. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

  4. cocos2dx基础篇(14) 滚动视图CCScrollView

    [3.x]     (1)去掉 "CC"     (2)滚动方向         > CCScrollViewDirection 改为强枚举 ScrollView::Dire ...

  5. 滚动视图和页面控制UIScollView,UIpageControlDemo

    ////  ViewController.m//  UIScollView////  Created by hehe on 15/9/25.//  Copyright (c) 2015年 wang.h ...

  6. 制作滚动视图(ScrollView)

    怎样判断是否应当使用滚动视图 所谓的滚动视图,是指一个可以滑动的视窗,视窗大小和位置固定不变,视窗内的内容用户可以通过手指滑动或者拖动滚动天来进行滚动浏览. 滚动视图的目的是为了解决同类内容过多,一个 ...

  7. Cocos2d-x学习笔记(14)(更新函数scheduleUpdate、进度计时器CCProgressTo、滚动视图CCScrollView)

    一.scheduleUpdate 1.scheduleUpdate:此函数是CCNode的函数,每一个CCNode仅仅要调用scheduleUpdate更新函数,那么这个CCNode就会响应当前类的u ...

  8. iOS学习笔记——滚动视图(scrollView)

    滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController<UIScro ...

  9. iOS关于菜单滚动视图实现

    菜单滚动视图也是在项目开发过程中比较常用到的功能,先直接看效果图 实现的效果如下: 当菜单个数的总长度超过一个屏宽度就计算每一个的文字宽度,若没有则只进行一个屏平分,点击菜单项时,滚动的视图位置会随着 ...

随机推荐

  1. 优秀Java程序员必须了解的GC工作原理(转)

    一个优秀的Java程序员必须了解GC(Garbage Collection 垃圾收集)的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系 ...

  2. 逆向 Framework.jar

    Ref:http://www.addictivetips.com/mobile/what-is-odex-and-deodex-in-android-complete-guide/ Ref:http: ...

  3. mongoDB 批量更改数据,某个字段值等于另一个字段值

    由于mongodb数据库类似js的写法,所以即使数据库中新的列不存在也会自动创建 db.hospital.find().forEach( function(item){ db.hospital.upd ...

  4. Oracle Dataguard 介绍

    Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...

  5. 利用Javamail接收QQ邮箱和Gmail邮箱(转)

    求大神解答 Java代码: public class SendMailController { //@Autowired private JavaMailSenderImpl mailSender; ...

  6. Qt之QComboBox(基本应用、代理设置)

    QComboBox下来列表比较常用,用户可以通过选择不同的选项来实现不同的操作,如何实现自己的下拉列表呢? 很多人在问QComboBox如何设置选项的高度.代理等一些问题!今天就在此分享一下自己的一些 ...

  7. 【原创】最近写的一个比较hack的小爬虫

    目标:爬取爱漫画上面自己喜欢的一个漫画 分析阶段: 0.打开爱漫画主页,迎面就是一坨js代码..直接晕了 1.经过抓包和对html源码的分析,可以发现爱漫画通过另外一个域名发送图片,而当前域名中通过j ...

  8. UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)

    意甲冠军  由于矩阵乘法计算链表达的数量,需要的计算  后的电流等于行的矩阵的矩阵的列数  他们乘足够的人才  非法输出error 输入是严格合法的  即使仅仅有两个相乘也会用括号括起来  并且括号中 ...

  9. .NET垃圾回收笔记

    名词 垃圾收集目标 ephemeral GC 发生在Gen 0 和Gen 1 的垃圾收集 Full GC 发生Gen 2 及以上的Gen与LOH的垃圾收集 垃圾收集模式 工作站模式 GC直接发生在内存 ...

  10. contextmenu

    void Loaded(object sender, RoutedEventArgs e) { ContextMenu contextMenu = new ContextMenu(); context ...