cocos2d-3x 版本tableview的使用(怎么取消弹簧效果);

1.在VS中设置 C++ 附加包含目录编辑添加$(EngineRoot)这句话。

2.引入头文件,而不这样写的目的是为了解决安卓找不到tableview。在引入命令空间。

3.实现tableview的功能,首页要共有继承TableViewDataSource和TableViewDelegate两个代理类。

4.实现下面的虚方法

virtual void scrollViewDidScroll(cocos2d::extension::ScrollView*view)override{};

virtual void scrollViewDidZoom(cocos2d::extension::ScrollView*view)override{}

virtual void tableCellTouched(cocos2d::extension::TableView*table,cocos2d::extension::TableViewCell*cell)override;

virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView*table,ssize_tidx)override;

virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView*table,ssize_tidx)override;

virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView*table)override;

5.废话不多说直接上代码

#include"MenuColor.h"

#include"VisibleRect.h"

#include"GlobalDefine.h"

#include"GlobalArray.h"

USING_NS_CC;

MenuColor* MenuColor::create(floatwidth,floatheight)

{

automenucolor=new(std::nothrow)MenuColor();

if(menucolor&&menucolor->init(width,height))

{

menucolor->autorelease();

returnmenucolor;

}

else

{

CC_SAFE_DELETE(menucolor);

returnnullptr;

}

}

bool MenuColor::init(floatwidth,floatheight)

{

if(!LayerColor::initWithColor(Color4B(0,0,0,0),width,height))

{

returnfalse;

}

this->setAnchorPoint(Vec2::ZERO);

_color3b=Color3B(255,0,0);

_cellnum=-100;

//创建tableview

TableView* tableView=TableView::create(this,Size(120*resourceScale,height));

tableView->setDirection(ScrollView::Direction::VERTICAL);

tableView->setPosition(Vec2::ZERO);

tableView->setDelegate(this);

tableView->setDataSource(this);

tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);

this->addChild(tableView);

tableView->reloadData();

this->setSwallowsTouches(false);

returntrue;

}

void MenuColor::tableCellTouched(cocos2d::extension::TableView*table,cocos2d::extension::TableViewCell*cell)

{

if(_cellnum>=1)

{

__Stringselect1=StringUtils::format("colorselect_%zd.png",_cellnum+10);

autocell2=(TableViewCell*)table->cellAtIndex(_cellnum-1);

if(cell2!=nullptr)

{

autoframe=getSpriteFrameByName(select1.getCString());

autosp2=Sprite::createWithSpriteFrame(frame);

cell2->removeAllChildren();

cell2->addChild(sp2);

sp2->setAnchorPoint(Vec2::ZERO);

sp2->setPosition(Vec2::ZERO);

sp2->setScale(resourceScale);

frame=getSpriteFrameByName("colorselect.pmg");

autosp=Sprite::createWithSpriteFrame(frame);

sp->setAnchorPoint(Vec2::ZERO);

sp->setPosition(Vec2(0,-4));

sp->setScale(resourceScale);

cell->addChild(sp,4,_cellnum);

_cellnum=(int)cell->getIdx();

}

else

{

autoframe=getSpriteFrameByName("colorselect.pmg");

autosp=Sprite::createWithSpriteFrame(frame);

sp->setAnchorPoint(Vec2::ZERO);

sp->setPosition(Vec2(0,-4));

sp->setScale(resourceScale);

cell->addChild(sp,4,_cellnum);

_cellnum=(int)cell->getIdx()+1;

}

}

else

{

_cellnum=(int)cell->getIdx()+1;

autoframe=getSpriteFrameByName("colorselect.png");

autosp=Sprite::createWithSpriteFrame(frame);

sp->setAnchorPoint(Vec2::ZERO);

sp->setPosition(Vec2(0,-4));

sp->setScale(resourceScale);

cell->addChild(sp,4,_cellnum);

}

intr=colorMap[cell->getIdx()][0];

intg=colorMap[cell->getIdx()][1];

intb=colorMap[cell->getIdx()][2];

_color3b=Color3B(r,g,b);

if(_colorDelegate!=nullptr)

{

_colorDelegate->setColor3B(_color3b);

}

}

Size MenuColor::tableCellSizeForIndex(cocos2d::extension::TableView*table,ssize_tidx)

{

returnSize(100*resourceScale,110*resourceScale);

}

TableViewCell* MenuColor::tableCellAtIndex(cocos2d::extension::TableView*table,ssize_tidx)

{

autocell=table->cellAtIndex(idx);

autoselect1=StringUtils::format("colorselect_%zd.png",idx+11);

if(!cell)

{

cell=new(std::nothrow)TableViewCell();

cell->autorelease();

autoframe=getSpriteFrameByName(select1.c_str());

autosprite=Sprite::createWithSpriteFrame(frame);

sprite->setAnchorPoint(Vec2::ZERO);

sprite->setPosition(Vec2(4*resourceScale,0));

sprite->setScale(resourceScale);

cell->addChild(sprite);

cell->setTag((int)idx+1);

}

returncell;

}

ssize_t MenuColor::numberOfCellsInTableView(cocos2d::extension::TableView*table)

{

return24;

}

void MenuColor::setDrawColorDelegate(ColorDelegate*delegate)

{

_colorDelegate=delegate;

}

Color3B MenuColor::getColor3B()

{

return_color3b;

}

但是根据某些需求不想要tableview自带的弹簧效果,可以使用 tableView->setBounceable(false);来关闭弹簧效果。但是没有了惯性。重写下面的方法就可以解决这个问题

virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view)override {

//取消弹性

auto layout = view->getContainer();

float currentY = layout->getPositionY();

if(currentY > 0)

{

view->setContentOffset(cocos2d::Vec2(0,0));

}

if(-currentY > layout -> getContentSize().height - view -> getViewSize().height)

{

view -> setContentOffset(cocos2d::Vec2(0, -layout -> getContentSize().height + view -> getViewSize().height));

}

}

时间: 2024-10-11 18:33:51

cocos2d-3x 版本tableview的使用(怎么取消弹簧效果);的相关文章

安卓开发游戏用Cocos2d什么版本?

这两天上课,讲了两天半的游戏开发,做一个植物大战僵尸的小demo,最终实现到一步步点击进入游戏后,豌豆射手可以打死僵尸,僵尸可以啃坚果. 使用的是Cocos2d-android,老师在讲课的时候主要就是说这样写可以实现这样的效果,哒哒哒做出来.我听着十分焦灼..难受,因为这些类的今生前世,什么关系,都是干什么的啊不是很清楚.于是下来自己查相关的资料,在网上搜知识点,发现引用了一本书<cocos2d-x权威指南>,讲的比较详细,于是下来看,直接看第三章核心类,看到代码发现是C++的,感觉不对头.

Pythonc初探---2x版本与3x版本的区别

Python的3.0版本,常被称为Python 3000,或简称Py3k.相对于Python的早期版本,这是一个较大的升级. 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容. 许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行. 为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数. 新的Python程式建议使用Pyt

tableView点击后取消选中效果

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

如何取消tableView的footer的粘滞效果

footer默认的是固定在底部的  但有时我们需要和view一起滚动 主要是在scrollViewDidScroll这个代理方法中监听滚动的状况 设置如下 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat sectionHeaderHeight = 26;//设置你footer高度  这个值根据你自己的实际情况设置        if (scrollView.contentOffset.y<=sectionHeader

Cocos2d各版本搭建环境中的奇葩操作

#Version: Cocos2d-x 3.4 Android 将[Cocos2d-x解压目录]\cocos\platform\android\java\src中的com,org目录拷贝覆盖到[项目根目录]\proj.android\src目录下.

iOS:tableView表头下拉放大的效果

现在很多app设置了这样的效果,如何实现这一效果呢,其实只需要简单的两个方法,那么我们直接上代码 首先我们在storyBoard里拖一个tableView并设置Navigation,接下来我们在tableView中设置图片我是自己写了个方法然后在viewDidLoad中调用,也可以直接在viewDidLoad中设置 UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 2

TableView的点击展开动画效果

效果 注:真机效果非常不错的哦 说明 1. 判断展开与否的逻辑由数据源Model处理 2. UITableViewHeaderFooterView的用法跟普通的cell用法一致 3. 以下的写法是应该单独封装成类的,因为是写demo,所以没有处理 源码 https://github.com/YouXianMing/HeaderViewTapAnimation // // ViewController.m // HeaderViewTapAnimation // // Created by You

块元素、内敛元素、行内块元素特点、相互转换、取消默认效果

块元素特性 块元素,也可以称为行元素,布局中常用的标签如:div.p.ul.li.h1~h6等等都是块元素,它在布局中的行为: 支持全部的样式 如果没有设置宽度,默认的宽度等于父级的width 盒子占据一行.即使设置了宽度 包含默认样式的块元素 上面讲的块标签中,有些标签是包含默认的样式的,这个含默认样式的有 p标签:含有默认外边距 ul.ol标签:含有默认外边距和内边距,以及条目符号(小圆点或者编号) h1~h6标签:含有默认的外边距和字体大小 dl.dd标签:含有默认外边距 body标签:含

js 在页面实现微信按住说话,移开取消录音效果

获取起点(touchstart)Y轴坐标与终点(touchend)Y轴坐标,如果起点大于终点那么就去执行取消操作 ********:坐标起点是浏览器左上角,所以往上滑动的话,起点坐标大于终点坐标. 点击长按啊 JS:// var btnElem=document.getElementById("loading");//获取ID var posStart = 0;//初始化起点坐标 var posEnd = 0;初始化终点坐标 function initEvent() { btnElem