cocos2d-x之码农工作笔记CCScrollView

【此文部分内容载录 http://blog.csdn.net/xujiezhige/article/details/8558999】

近期工作中要使用CCScrollView,但是网上相对的资料比较少,而且在使用过程中有很多莫名其妙的问题,我先写下CCScrollView的简单使用方法,待所有问题都解决了,再补充上我遇到的问题。

首先我使用的为2.0.4版本,据说2.0.3版本CCScrollView有很大问题,不建议使用那个版本的此控件。

那么CCScrollView是extensions库里面东西,所以要首先引入头文件
在.h下入下面代码
#include "cocos-ext.h"
USING_NS_CC_EXT;

然后你所定义的Layer必须继承CCScrollViewDelegate并实现

void scrollViewDidScroll(CCScrollView* view);

void scrollViewDidZoom(CCScrollView* view);

代码如下:

class myScrollView : public cocos2d::CCLayer ,public CCScrollViewDelegate  
{  
   public:  
    void scrollViewDidScroll(CCScrollView* view);  
    void scrollViewDidZoom(CCScrollView* view);  
   //****其他的函数*** 
}  
到这里先不急着写代码,我先讲一下CCScrollView的一些属性
1,CCScrollView有两个重要个概念  一个是可视化区域View  一个是容器区域Container View就是CCScrollView可以显示的区域,同时也是可以接受触摸消息的区域,即玩家可以滚动的大小。
2,Container是CCScrollView的直接子节点。其大小即可以滚动的内容面板大小。举个常见的例子:如果View大小是(200,200),Container大小是(200,800),那么我们就可以滚动Container以显示其不同区域。
3,CCScrollView创建后,默认将Container的左下角于自身的左下角对齐,即从Container的底部区域开始显示。例如:上面的例子,CCScrollView中显示的是Container最下方的(200,200)区域,而不是顶部的(200,200)区域。
4,Container的初始位置可以进行调用setContentOffset()进行偏移,这样就可以让Container的顶部作为一开始的显示区域。
5,调用CCScrollView::addChild的节点,都会被CCScrollView更改锚点和坐标。新的锚点值和坐标值都将是(0,0)。这也是为什么Container一开始会在CCScrollView的左下角的原因,如果CCScrollView有了Container(无论是你提供的,还是默认创建的),那么addChild( A ),会将A节点作为Container的直接子节点。
6,当Container的大小小于CCScrollView的大小的时候,CCScrollView一旦被滚动,就会试图将Container位置重置为创建时的位置,也就是将Container放在CCScrollView的左下角。
 // CCScrollView  
       scrollView = CCScrollView::create(); //创建一个scrollview  
       CCLayer *layer = CCLayer::create();  //创建一个层,作为滚动的内容  
       for (int i=1;i<=6;i++)  
       {  
           CCSprite *sprite = CCSprite::create("HelloWorld.png");  
           sprite->setScaleX(2.0);  
           sprite->setScaleY(1.0);  
           sprite->setPosition(ccp(size.width*(i-0.5),size.height/2+25));  
           layer->addChild(sprite);  
       }  
         
       layer->setAnchorPoint(CCPointZero);  
       layer->setPosition(CCPointZero);  
  
       scrollView->setPosition(CCPointZero);  
       scrollView->setContentOffset(CCPointZero);  
       layer->setContentSize(CCSizeMake(480*6, 320));        //设置滚动区域的大小  
       scrollView->setViewSize(CCSizeMake(480, 320));//设置显示区域大小(我曾经错设了setContentSize结果我悲剧了)
	scrollView->setBounceable(false);//设置是否反弹效果
 	scrollView->setContainer(layer); //设置需要滚动的内容 
	scrollView->setTouchEnabled(false); //因为要自己实现触摸消息,所以这里设为false









(未完待续******)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值