cocos2d-x ScrollView实现帮助界面
来源:互联网 发布:人口普查数据库 编辑:程序博客网 时间:2024/06/05 10:54
使用工具:Xcode4.5
cocos2d-x版本:cocos2d-2.1rc0-x-2.1.2
1. 使用CCScrollView
CCScrollView 在 Cocos2d-x 的扩展库里面,要使用它,必须导入头文件:#include"cocos-ext.h"并加入命名空间:using namespace cocos2d::extension;(或者使用宏:USING_NS_CC_EXT;)
(在VS2010里,可以这样导入:#include "../../extensions/cocos-ext.h",当然前提是extensions库在项目工程文件夹下。)
首先在HelpScene.h里实现它的Delegate,如下:
#ifndef __HELP_SCENE_H__#define __HELP_SCENE_H__#include "cocos2d.h"#include "cocos-ext.h"#include "SimpleAudioEngine.h"USING_NS_CC;USING_NS_CC_EXT;class HelpScene : public cocos2d::CCLayer ,public CCScrollViewDelegate{public: // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone virtual bool init(); // there's no 'id' in cpp, so we recommand to return the exactly class pointer static cocos2d::CCScene* scene(); CREATE_FUNC(HelpScene);public: //重写这两个函数,必须实现(在基类中这两个是纯虚函数)void scrollViewDidScroll(CCScrollView* view);void scrollViewDidZoom(CCScrollView* view);public:virtual void onEnter();virtual void onExit();virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);private: void adjustScrollView(float offset); CCScrollView * scrollView; CCPoint touchPoint; int pageNum;};#endif // __HELP_SCENE_H__其实现部分如下:
#include "HelpScene.h"CCScene* HelpScene::scene(){ // 'scene' is an autorelease object CCScene *scene = CCScene::create(); // 'layer' is an autorelease object HelpScene *layer = HelpScene::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene; }// on "init" you need to initialize your instancebool HelpScene::init(){ if(!CCLayer::init()) { return false; }; //初始化变量 pageNum = 1; CCSize size = CCDirector::sharedDirector()->getWinSize(); //背景 CCSprite *bg = CCSprite::create("Help_BG-hd.png"); bg->setPosition(ccp(size.width/2,size.height/2)); this->addChild(bg); //创建CCScrollView,并指定view大小 scrollView = CCScrollView::create(CCSizeMake(480, 320)); CCLayer *layer = CCLayer::create(); for (int i=1;i<=6;i++) { CCSprite *sprite = CCSprite::create(CCString::createWithFormat("Help_%02d_chs-hd.png", i)->getCString()); sprite->setScaleY(0.5); sprite->setAnchorPoint(CCPointZero); sprite->setPosition(ccp(size.width*(i-1),0)); layer->addChild(sprite); } layer->setAnchorPoint(CCPointZero); layer->setPosition(CCPointZero); scrollView->setPosition(ccp(20,50)); scrollView->setContentOffset(CCPointZero); layer->setContentSize(CCSizeMake(480*6, 320)); scrollView->setContainer(layer); scrollView->setTouchEnabled(false); scrollView->setDelegate(this); scrollView->setDirection(kCCScrollViewDirectionHorizontal); this->addChild(scrollView); CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache(); ache->addSpriteFrame(CCSpriteFrame::create("Help_Point01-hd.png",CCRectMake(0,0,32,32)),"Help_Point01-hd.png"); cache->addSpriteFrame(CCSpriteFrame::create("Help_Point02-hd.png",CCRectMake(0,0,32,32)),"Help_Point02-hd.png"); for (int i=1;i<=6;i++) { CCSprite *point = CCSprite::createWithSpriteFrameName("Help_Point01-hd.png"); point->setTag(100+i); point->setPosition(ccp(160+30*i,30)); this->addChild(point); } CCSprite *point = (CCSprite *)this->getChildByTag(101); point->setDisplayFrame(cache->spriteFrameByName("Help_Point02-hd.png")); return true;}void HelpScene::scrollViewDidScroll(cocos2d::extension::CCScrollView *view){}void HelpScene::scrollViewDidZoom(cocos2d::extension::CCScrollView *view){}void HelpScene::onEnter(){CCLayer::onEnter();CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 1, false);}void HelpScene::onExit(){CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);CCLayer::onExit();}bool HelpScene::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){touchPoint = pTouch->getLocation();return true;}void HelpScene::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){}void HelpScene::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){CCPoint endPoint = pTouch->getLocation();adjustScrollView(endPoint.x-touchPoint.x);}void HelpScene::ccTouchCancelled(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){CCPoint endPoint = pTouch->getLocation();adjustScrollView(endPoint.x-touchPoint.x);}void HelpScene::adjustScrollView(float offset){CCSize size =CCDirector::sharedDirector()->getWinSize(); CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();CCSprite *point = (CCSprite *)this->getChildByTag(100+pageNum);point->setDisplayFrame(cache->spriteFrameByName("Help_Point01-hd.png"));if (offset<0){ pageNum ++;} else{ pageNum --;}if (pageNum <1){pageNum = 1;} else if(pageNum > 6){ pageNum =6;}point = (CCSprite *)this->getChildByTag(100+pageNum);point->setDisplayFrame(cache->spriteFrameByName("Help_Point02-hd.png"));CCPoint adjustPos = ccp(-size.width*(pageNum-1),0);scrollView->setContentOffset(adjustPos, true);}
效果图:(网上素材)
- cocos2d-x ScrollView实现帮助界面
- 【cocos2d-x】利用CCScrollView, 实现帮助界面
- 【cocos2d-x】利用CCScrollView, 实现帮助界面
- 【cocos2d-x】利用CCScrollView, 实现帮助界面
- quick-cocos2d-x实现scrollview
- Cocos2d-x关于ScrollView
- cocos2d-x ScrollView、TableView
- Cocos2d-x ScrollView使用
- Cocos2d-x 帮助文档
- Cocos2d-x--实现Loading界面加载资源
- cocos2d-x Loading界面实现资源加载
- Cocos2d-x--实现Loading界面加载资源
- cocos2d-x 3.0 Loading界面实现
- cocos2d-x Loading界面实现资源加载
- cocos2d-x中使用ScrollView实现滑屏效果
- Cocos2d-x学习(七):cocos2d-x中ScrollView的简单实现
- Cocos2d-x学习(七):cocos2d-x中ScrollView的简单实现
- Cocos2d-x学习(七):cocos2d-x中ScrollView的简单实现
- Tomcat配置https及访问http自动跳转至https
- 面试题之你好吗
- C++ 策略模式
- 线程阻塞
- c++做机试时候几点注意
- cocos2d-x ScrollView实现帮助界面
- windows server 2008 部署 Java程序
- IDEA快捷键
- OpenCV_基于局部自适应阈值的图像二值化
- 面试题之更进一步
- 13/03/31第四周周赛解题报告
- 关于函数指针与typedef
- virtualkeyboard.h的简单介绍
- SSIS Package Protection Level