温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

cocos2d-x中实现CCScrollView翻页操作

发布时间:2020-06-12 18:42:27 来源:网络 阅读:1433 作者:tianyong8311 栏目:游戏开发

游戏有许多翻页的操作,如查看背包物品,显示不同地图场景,今天就带大家实现一个简单的翻页操作(也是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);

}



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI