使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之三 初始界面的编写(1)

上次我们有看到了视频的演示,这个游戏我们是如何做出来的呢,今天我们就来学习其中的一个,初始化界面

1:首先我们假设你已经创建了cocos2d-x的工程(我用的是cocos2d-x3.4),并且是可以运行的。

2:编写Loading的界面,这一步呢,我们主要是想写一个加载进度条,这一个里面我们重点讲解其效果,并不做实际意义上的东西,新建一个LoadLayer.cpp和。h的文件

里面写加载代码如下:

//实现LoadLayer类中的init方法,初始化布景
bool LoadLayer::init()
{

    //调用父类的初始化
    if ( !CCLayer::init() )
    {
        return false;
    }

    time =0;
    //获取可见区域尺寸
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    //获取可见区域原点坐标
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();


    label = CCLabelTTF::create("00 %", "Arial", 22);
addChild(label, 3);
label->setPosition( ccp(origin.x+visibleSize.width/3+130, origin.y+visibleSize.height/7+14));
    //创建一个精灵对象,包含一张图片,充当背景
    CCSprite* bSprite = CCSprite::create("gameBackground.png");
    //设置精灵对象的位置
    bSprite->setPosition(ccp(origin.x, origin.y));
    bSprite->setAnchorPoint(ccp(0, 0));//设置锚点
    //将背景精灵添加到布景中
    this->addChild(bSprite, BACKGROUND_LEVEL_WYF);
    //创建标题精灵
    CCSprite* tSprite = CCSprite::create("skytitle2.png");
    //设置标题精灵的位置
    tSprite->setPosition(ccp(origin.x+visibleSize.width/3-40, origin.y+visibleSize.height/4));
    tSprite->setAnchorPoint(ccp(0, 0));//设置锚点
    //将标题精灵添加到布景中
    this->addChild(tSprite, BACKGROUND_LEVEL_WYF+1);
    //创建进度条背景精灵 进度条的背景图片
    CCSprite* pSprite = CCSprite::create("progressbar1.png");
    //设置进度条背景精灵的位置
pSprite->setPosition(ccp(origin.x+visibleSize.width/3-17, origin.y+visibleSize.height/7));
pSprite->setAnchorPoint(ccp(0, 0));//默认锚点为0.5,0.5
//将进度条背景精灵添加到布景中
this->addChild(pSprite, BACKGROUND_LEVEL_WYF+1);
//创建一个进度条的动作
CCProgressTo *to1 = CCProgressTo::create(2.5, 100);
//创建进度条内部精灵
CCProgressTimer *left = CCProgressTimer::create(CCSprite::create("progressbar2.png"));
left->setType(kCCProgressTimerTypeBar);
left->setMidpoint(ccp(0,0));//设置进度条从左往右走
left->setBarChangeRate(ccp(1, 0));//设置变化率
left->setAnchorPoint(ccp(0, 0));//设置锚点
//将进度条添加到布景中
pSprite->addChild(left, BACKGROUND_LEVEL_WYF+2);
//将进度条内部精灵 对齐到外部精灵中  实现一个整体的进度条
left->setPosition(ccp(34, 9));
//为内部进度条设置动作序列
left->runAction
(
   CCSequence::create
   (
   to1,//滚动动作
   CCCallFuncND::create(this,callfuncND_selector(LoadLayer::callFuncProgressOver),NULL),//切换到欢迎界面
   NULL
   )
);

    schedule( schedule_selector(LoadLayer::step),0.05f);
    return true;
}
//进度条走完后切换到欢迎界面
void LoadLayer::callFuncProgressOver(CCNode* node,void* param)
{
gpm->goMenu();

}
void LoadLayer::step(float dt)
{
if(time<100)
  time+=2;
char temp[7];
sprintf(temp,"%d%%",time);
label->setString(temp);
}
至于.h见下面

/自定义的布景类
class LoadLayer : public cocos2d::CCLayer
{
public:
cocos2d::CCLabelTTF* label ;
int time;
//所属管理者
GameProjectMange *gpm;
//背景精灵
cocos2d::CCSprite *backSprite;
//初始化的方法
    virtual bool init();
    //进度条走完切换到welcome界面的方法
    void callFuncProgressOver(cocos2d::CCNode*,void*);
    void step(float dt);
    //CCPlatformMacros.h文件中定义的一个宏,创建指定类型的对象
    //并做好相应的初始化与释放工作
    CREATE_FUNC(LoadLayer);
};

#endif

3:这里我们有用到了一个类GameProjectMange ,这个类主要是用来做跳转的,这样方面管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值