您的位置:首页 > 移动开发 > Cocos引擎

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

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

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 ,这个类主要是用来做跳转的,这样方面管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐