ScrollView与TableView实现选择效果
来源:互联网 发布:api原油库存数据官网 编辑:程序博客网 时间:2024/06/07 06:25
在cocos2dx中,ScrollView与TableView都可以实现选择效果,其中ScrollView较为原始,TableView的格子大小可以不与winSize一样大。
ScrollView实现
#include "T25ScrollView.h"#include "AppMacros.h"CCScene* T25ScrollView::scene(){ CCScene *scene=CCScene::create(); T25ScrollView* layer=T25ScrollView::create(); scene->addChild(layer); return scene;}bool T25ScrollView::init(){ CCLayer::init(); CCNode *node=CCNode::create(); _node=node; char buf[]="a"; for (int i=0;i<5;i++) { CCSprite *s=CCSprite::create("HelloWorld.png"); node->addChild(s); s->setPosition(ccp(i*winSize.width,0)); s->setAnchorPoint(ccp(0,0)); CCLabelTTF *label=CCLabelTTF::create(buf,"Arial",24); buf[0]++; s->addChild(label); label->setPosition(ccp(winSize.width/2,winSize.height/2)); } CCScrollView *view=CCScrollView::create(winSize,node); addChild(view); view->setDirection(kCCScrollViewDirectionHorizontal); view->setContentSize(CCSizeMake(winSize.width*5,winSize.height)); view->setBounceable(false); //get rid of elastic setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); return true;}bool T25ScrollView::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){ return true;}void T25ScrollView::adjustViewPosition(float dt){ //calculate int fitPos[]={0,-winSize.width,-winSize.width*2,-winSize.width*3,-winSize.width*4}; int x=_node->getPositionX(); int i; for(i=0;i<5;i++) { int dist=abs(fitPos[i]-x); if (dist<winSize.width/2) { break; } } CCPoint ptDest=ccp(fitPos[i],0); _node->runAction(CCMoveTo::create(0.2f,ptDest));}void T25ScrollView::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){ //judge if is slider if (isSlider(pTouch)) { //adjust position scheduleOnce(schedule_selector(T25ScrollView::adjustViewPosition),0.05f); return; } //judge which position is clicked CCPoint ptWorld=pTouch->getLocation(); CCPoint ptNode=_node->convertToNodeSpace(ptWorld); int index=ptNode.x/winSize.width; CCLog("click index =%d",index);}bool T25ScrollView::isSlider(CCTouch *PTouch){ CCPoint ptCur=PTouch->getLocation(); CCPoint ptStart=PTouch->getStartLocation(); if (ptCur.getDistanceSq(ptStart)>25) { return true; } return false;}
TableView实现
#include "T26TableView.h"#include "AppMacros.h"CCScene* T26TableView::scene(){ CCScene *scene=CCScene::create(); T26TableView* layer=T26TableView::create(); scene->addChild(layer); return scene;}bool T26TableView::init(){ CCLayer::init(); CCSize cellSize=CCSize(80,80); _cells=CCArray::create(); _cells->retain(); for(int i=0;i<5;i++) { CCTableViewCell *cell=new CCTableViewCell; _cells->addObject(cell); cell->autorelease(); CCSprite *sprite=CCSprite::create("p_2_01.png"); cell->addChild(sprite); sprite->setPosition(ccp(cellSize.width/2,cellSize.height/2)); } CCTableView *view=CCTableView::create(this,CCSize(cellSize.width*3,cellSize.height)); addChild(view); view->setDirection(kCCScrollViewDirectionHorizontal); view->reloadData(); view->setPosition(ccp(200,200)); //response click view->setDelegate(this); return true;}
其中在TableView中使用了代理的设计模式,类要继承public CCTableViewDataSource,public CCTableViewDelegate,并且实现他们的纯虚函数,从而达到代理的效果
运行效果
0 0
- ScrollView与TableView实现选择效果
- tableView 实现隐藏效果
- ScrollView反弹效果实现
- ScrollView实现滑动效果
- ScrollView实现滚动效果
- ScrollView实现滚动效果
- ScrollView -- 实现滚动效果
- scrollview实现反弹效果与解决与listview的冲突
- 3d tableView 效果实现
- 8-20学习练习[用两个tableview实现类似省市联动选择效果]
- 使用ScrollView实现滚动效果
- ScrollView反弹效果的实现
- 自定义ScrollView实现弹性效果
- ScrollView实现阻尼回弹效果!
- ScrollView反弹效果的实现
- ScrollView反弹效果的实现
- 使用ScrollView实现滚动效果
- 用scrollView实现轮播图效果
- JS字符串截取
- (转)获得每日,每周,每月的0点和24点的时间戳
- pat1021:个位数统计
- js判断用户浏览器类型(IE或IE内核和非IE)及判断IE浏览器版本(32位或64位)
- iOS压缩与解压框架SSZipArchive使用详解
- ScrollView与TableView实现选择效果
- 《JAVA与模式》之装饰模式
- Android Support v4、v7、v13的区别和应用场景
- Android获取Manifest中<meta-data>元素的值
- Activity间用Intent和Bundle传递参数
- java程序设计基础_陈国君版第五版_第四章例题
- JAVA timer.schedule用法
- 常量指针和指针常量的区别详解
- (java)Subsets II