上次我们有看到了视频的演示,这个游戏我们是如何做出来的呢,今天我们就来学习其中的一个,初始化界面
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 ,这个类主要是用来做跳转的,这样方面管理 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|