使用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 ,这个类主要是用来做跳转的,这样方面管理

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...