上次我们有看到了视频的演示,这个游戏我们是如何做出来的呢,今天我们就来学习其中的一个,初始化界面
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 ,这个类主要是用来做跳转的,这样方面管理
原文链接:https://www.f2er.com/cocos2dx/343653.html