使用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 ,这个类主要是用来做跳转的,这样方面管理
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 ,这个类主要是用来做跳转的,这样方面管理
相关文章推荐
- 使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之三 初始界面的编写(2)
- 使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之一 Win8平台的Cocos2dx环境搭建与知识预备
- 使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之二 视频演示
- XNA Game Studio是一套有着强大功能和简单界面的游戏制作平台,游戏开发商和游戏玩家都可以使用这套工具开发针对Windows XP以及Xbox360的游戏,XNA Game Studio分为两种版本,一种是面向初学者的EXPRESS版本,还有一种
- XNA Game Studio是一套有着强大功能和简单界面的游戏制作平台,游戏开发商和游戏玩家都可以使用这套工具开发针对Windows XP以及Xbox360的游戏,XNA Game Studio分为两种版本,一种是面向初学者的EXPRESS版本,还有一种是面向专业用户的专业版。用户使用EXPRESS版本开发游戏完全免费,并且可以随意在PC上发行,不过用该工具开发的游戏若是在360上网络发行,就需要交纳99美元的年费。
- 使用C语言和DX库编写东方风格的STG射击游戏--------第一章--------创建基本界面以及可以移动的角色
- libgdx游戏引擎开发笔记(十)SuperJumper游戏例子的讲解(篇四)---- 主游戏界面内部框架编写
- 利用5个标签,4个文本框,2个按钮,自己设计布局实现输入三边求三角形面积。界面如下所示。三角形类的编写可以使用实验4中已经写过的三角形类,当点击“判断三边”时,若能构成三角形,在标签5上显示“可以构成三角形!”,如不能构成三角形,在标签5上显示“不能构成三
- 【iOS-cocos2d-X 游戏开发之十六】Cocos2dx编译后的Android自动使用(-hd)高清图&设置自适应屏幕
- 【iOS-cocos2d-X 游戏开发之十一】New CCSprite()带来的错误&使用CCUserDefault及pvr.ccz在Cocos2dx中要注意!
- 使用Libgdx进行游戏开发(10)-音乐音效不求人,程序员也可以DIY
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(2)之 欢迎 界面编写
- libgdx游戏引擎开发笔记(十)SuperJumper游戏例子的讲解(篇四)---- 主游戏界面内部框架编写
- 【COCOS2DX-游戏开发之十】使用eclipse调试cocos2d-x Native C++ 代码
- 【iOS-cocos2d-X 游戏开发之六】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码!
- 开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- 【COCOS2DX-LUA 脚本开发之一】LUA语言基础在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(2)之 欢迎 界面编写
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- 【iOS-cocos2d-X 游戏开发之六】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码!