CCScrollView使用实例(二) -- 关卡选择界面

本文介绍如何定义一个关卡选择界面。采用了CCScrollView来实现。本文主要通过一个实例介绍菜单界面的实现。


先看效果图。如下:

1411022787752838.gif

1.本文需要的资源:HelloCpp.zip

2.把Resources文件夹下的图片资源和  CCGameScrollView.h 以及 CCGameScrollView.cpp文件导入自己的工程中

3.让你的类继承CCGameScrollView并实现5个纯虚接口。

1
2
3
4
5
6
7
8
9
10
11
//以下五个方法必须继承
//滚动触发
virtual void scrollViewDidScroll( cocos2d::extension::CCScrollView *view );
//缩放触发
virtual void scrollViewDidZoom( cocos2d::extension::CCScrollView *view );
//初始化每个单独页面,pPage为这个页面的容器,nPage是这个页面的ID
virtual bool scrollViewInitPage( cocos2d::CCNode *pScroll, cocos2d::CCNode *pPage, int nPage );
//点击某个页面处理
virtual void scrollViewClick( const cocos2d::CCPoint &oOffset, const cocos2d::CCPoint &oPoint , cocos2d::CCNode *pPage, int nPage );
//每一次滑动后结束的回调,可以在这里处理一些事情
virtual void scrollViewScrollEnd( cocos2d::CCNode *pPage, int nPage );

4.实现相关的方法即可。

下面具体给出我自己的测试类。

LevelSelect.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
//  LevelSelect.h
//  RunGame
//
//  Created by Colin on 14-4-13.
//
//
#ifndef __RunGame__LevelSelect__
#define __RunGame__LevelSelect__
#include <iostream>
#include "cocos2d.h"
#include "CCGameScrollView.h"    //导入头文件
using namespace cocos2d;
class LevelSelectScene
    : public cocos2d::CCLayer
    , public CCCGameScrollViewDelegate
{
public :
   
    LevelSelectScene();
    ~LevelSelectScene();
   
    bool init();
   
    static cocos2d::CCScene* scene();
   
    //以下五个方法必须继承
    //滚动触发
    virtual void scrollViewDidScroll( cocos2d::extension::CCScrollView *view );
    //缩放触发
    virtual void scrollViewDidZoom( cocos2d::extension::CCScrollView *view );
    //初始化每个单独页面,pPage为这个页面的容器,nPage是这个页面的ID
    virtual bool scrollViewInitPage( cocos2d::CCNode *pScroll, cocos2d::CCNode *pPage, int nPage );
    //点击某个页面处理
    virtual void scrollViewClick( const cocos2d::CCPoint &oOffset, const cocos2d::CCPoint &oPoint , cocos2d::CCNode *pPage, int nPage );
    //每一次滑动后结束的回调,可以在这里处理一些事情
    virtual void scrollViewScrollEnd( cocos2d::CCNode *pPage, int nPage );
   
    CREATE_FUNC(LevelSelectScene);
   
private :
    CCCGameScrollView *m_ScrollView;
};
#endif /* defined(__RunGame__LevelSelect__) */

LevelSelect.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//
//  LevelSelect.cpp
//  RunGame
//
//  Created by Colin on 14-4-13.
//
//
#include "LevelSelect.h"
#include "SimpleAudioEngine.h"
#include "GameMain.h"   //主游戏界面
using namespace cocos2d;
using namespace CocosDenshion;
USING_NS_CC_EXT;
LevelSelectScene::LevelSelectScene()
{
   
}
LevelSelectScene::~LevelSelectScene()
{
   
}
CCScene* LevelSelectScene::scene()
{
    CCScene *scene = CCScene::create();
   
    LevelSelectScene *layer = LevelSelectScene::create();
   
    scene->addChild(layer);
   
    return scene;
}
//滚动触发
void LevelSelectScene::scrollViewDidScroll( CCScrollView *view )
{
   
}
//缩放触发
void LevelSelectScene::scrollViewDidZoom( CCScrollView *view )
{
   
}
//初始化每个单独页面,pPage为这个页面的容器,nPage是这个页面的ID
bool LevelSelectScene::scrollViewInitPage( cocos2d::CCNode *pScroll, cocos2d::CCNode *pPage, int nPage )
{
    CCString str;
    str.initWithFormat( "d.png" , nPage + 1);
    CCSprite *sprite = CCSprite::create(str.getCString());
    pPage->addChild(sprite);
   
    return true ;
}
//点击某个页面的处理
void LevelSelectScene::scrollViewClick( const cocos2d::CCPoint &oOffset, const cocos2d::CCPoint &oPoint , cocos2d::CCNode *pPage, int nPage )
{
    switch (nPage)
    {
        case 0:
        {
            //进入游戏主界面
            CCDirector::sharedDirector()->replaceScene(CCTransitionFadeBL::create(0.5,GameMain::scene()));
        }
            break ;
        case 1:
        {
            //滚动到某个页面
            m_ScrollView->scrollToPage(2);
        }
            break ;
        case 2:
        {
            //设置当前页面
            m_ScrollView->setCurPage(3);
        }
            break ;
    }
   
}
//每一次滑动后结束的回调,可以在这里处理一些事情
void LevelSelectScene::scrollViewScrollEnd( cocos2d::CCNode *pPage, int nPage )
{
    CCLog( "Current Page=%d" , nPage);
}
bool LevelSelectScene::init()
{
    if (!CCLayer::init())
    {
        return false ;
    }
   
   
    // CCScrollView
    m_ScrollView = CCCGameScrollView::create();   //创建一个scrollview
    m_ScrollView->setDirection(kCCScrollViewDirectionHorizontal);  //设置滚动的方向,目前来说只能横方向和纵方向
   
    //this,页面的数量,每个页面的尺寸(影响页面间的距离)
    m_ScrollView->createContainer( this , 5, CCSizeMake(CCDirector::sharedDirector()->getVisibleSize().width * 0.8, CCDirector::sharedDirector()->getVisibleSize().height));
    //一般是原点
    m_ScrollView->setPosition(ccp(0, 0));
    //视口的尺寸(一般是屏幕的尺寸)
    m_ScrollView->setViewSize(CCDirector::sharedDirector()->getVisibleSize());
   
    this ->addChild(m_ScrollView);
   
   
    return true ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值