cocos2d-x中实现CCScrollView翻页操作
更新:HHH   时间:2023-1-7


游戏有许多翻页的操作,如查看背包物品,显示不同地图场景,今天就带大家实现一个简单的翻页操作(也是CCScrollView的用法):

(1)首先CCScrollView 在 Cocosd-x 的扩展库里面,要是使用的话,需要引入扩展包,然后添加命名空间

  #include "cocos-ext.h"

  USING_NS_CC_EXT;//cocos2dx定义的宏


(2)class SelectScrollView : public cocos2d::CCLayer, public CCScrollViewDelegate{

   }

让该类继承CCSrollViewDelegate;


(3)然后实现CCScrollViewDelegate,这个其实是和UISCrollView和相似的。

  必须实现的两个方法。

  virtual void scrollViewDidScroll(CCScrollView* view);

    virtual void scrollViewDidZoom(CCScrollView* view);

(4)现在我们开始创建CCScrollView对象了。当然我们最好还是再创建一个Layer用来作为CCScrollView的Container。

CCLayer *layer = CCLayer::create();

CCScrollView _scrollView = CCScrollView::create();

for (int i=0; i<4; i++) {


char str[100] = {0};

sprintf(str, "UI_selectStage_%d-hd.png", i+1);

CCSprite *backgroundSprite = CCSprite::create(str);

           backgroundSprite -> setPosition(ccp(240+480*i, 160));

       }

       layer -> setAnchorPoint(CCPointZero);

       layer -> setPosition(CCPointZero);


_scrollView -> setAnchorPoint(CCPointZero);

_scrollView -> setPosition(CCPointZero);

_scrollView -> setViewSize(CCSizeMake(480, 320));

       layer -> setContentSize(CCSizeMake(480*4, 320));

_scrollView -> setContentSize(CCSizeMake(480*4, 320));

_scrollView -> setContainer(layer);

_scrollView -> setDirection(kCCScrollViewDirectionHorizontal);

_scrollView -> setDelegate(this);

this -> addChild(_scrollView);


this -> setTouchEnabled(true);


现在就可以实现基本的滑动操作了


(5)现在我们来实现翻页的功能

voidSelectScrollView::ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent) {

     _scrollView -> unscheduleAllSelectors();

    int x = _scrollView -> getContentOffset().x;

    int offset = (int) x % 480;

    CCPoint adjustPos;

    if (offset < -240) {

       adjustPos = ccpSub(_scrollView -> getContentOffset(), ccp(480 + offset, 0));


   }else{

       adjustPos = ccpSub(_scrollView -> getContentOffset(), ccp(offset, 0));


   }

   _scrollView -> setContentOffset(adjustPos);

}



返回游戏开发教程...