喵星战争(十):关于界面的实现

        我想当你完成一个游戏的时候,你肯定会很想把这个游戏挂上自己的大名。即使游戏做的再简单再丑,就好比自己生的孩子一样,再丑也是喜欢的不得了。所以今天我们要加上的就是可以打上你自己标记的一个界面应用:关于界面。相信你在很多游戏中也都看过这样介绍,下面我先贴上GameAboutScene.cpp中主要代码先:

bool GameAbout::init()
{
	if (!CCLayer::init())
	{
		return false;
	}

	CCSize size = CCDirector::sharedDirector()->getWinSize();

	//初始化背景
	CCSprite* bg = CCSprite::create("bg.png");
	bg->setScale(0.5);
	bg->setPosition(ccp(size.width/2 ,size.height/2));
	this->addChild(bg ,0 ,0);

	//初始化星球
	CCSprite* bgstar = CCSprite::create("moon.png");
	bgstar->setAnchorPoint(ccp(0.5 ,0));
	bgstar->setScale(0.5);
	bgstar->setPosition(ccp(size.width/3 * 1, 0));
	this->addChild(bgstar ,1, 1);

	//初始化关于框
	CCSprite *kuang = CCSprite::create("tb.png");
	kuang->setScale(0.5);
	kuang->setPosition(ccp(size.width/2 ,size.height/2));
	this->addChild(kuang , 2, 2);
	char inf[256];
	sprintf(inf ,"name:meow war\n\nprogram::shuoquan man\n\nart design:peng xu\n\ncompany:hz books\n\n  powered by cocos2D-x");
	CCLabelTTF *myjineng = CCLabelTTF::create(inf ,CCSizeMake(400, 400), kCCTextAlignmentLeft, "Marker Felt", 40);
	myjineng->setAnchorPoint(ccp(0 ,1));
	myjineng->setColor(ccc3(200 ,200 ,200));
	myjineng->setPosition(ccp(50 ,600));
	kuang->addChild(myjineng);

	//初始化关于标题
	CCSprite *abouttitle = CCSprite::create("about.png");
	abouttitle->setScale(0.5);
	abouttitle->setPosition(ccp(size.width/2 ,size.height -20));
	this->addChild(abouttitle ,3 ,3);

	//初始化返回按钮
	CCMenuItemImage *back = CCMenuItemImage::create("backA.png" ,"backB.png", this, menu_selector(GameAbout::menuBackCallback));
	back->setScale(0.5);
	back->setPosition(ccp(size.width - 20, size.height - 20));
	back->setEnabled(false);
	CCMenu *mainmenu = CCMenu::create(back , NULL);
	mainmenu->setPosition(ccp(0 ,0));
	this->addChild(mainmenu ,3 ,4);
	return true;
}

void GameAbout::onEnter()
{
	CCLayer::onEnter();

	//界面进入时,运行菜单项进入动作
	CCSize size = CCDirector::sharedDirector()->getWinSize();
	CCNode *mainmenu = this->getChildByTag(4);
	mainmenu->setPosition(-100);
	mainmenu->runAction(CCSequence::create(CCEaseElasticIn::create(CCMoveBy::create(0.5 ,ccp(100 ,0))),CCCallFuncN::create(this ,callfuncN_selector(GameAbout::menuEnter)), NULL));

	//加速动作
	CCNode *title = this->getChildByTag(3);
	title->setPositionY(size.height + 20);
	title->runAction(CCEaseElasticIn::create(CCMoveBy::create(0.5 ,ccp(0 ,-40))));
	
	CCNode *bgstar = this->getChildByTag(1);
	bgstar->setPositionX(size.width/3*2);
	bgstar->runAction(CCMoveBy::create(0.5 ,ccp(-size.width/3 ,0)));

	CCNode *kuang = this->getChildByTag(2);
	kuang->setPositionX(-20);
	kuang->runAction(CCEaseElasticIn::create(CCMoveTo::create(0.5 ,ccp(size.width/2 ,size.height/2))));
}
        进过前面的一些的介绍,到现在这些代码中比较的难理解的知识大概都是讲过的,即使没有介绍过的,大概看其大概的意思就可以明白,所以这里的知识点就比较少了,在这里就简单介绍下CCEaseElasticIn这个类的作用:反弹效果动作——Ease Elastic,这个解释起来可能比较麻烦,不过还好有广大cocos2d-x大神的分享: http://www.cnblogs.com/cocos2d-x/archive/2012/03/19/2407032.html这个链接里较详细的介绍了其具体用途,我就不再这班门弄斧了,像我等菜鸟就先记着其大概的用处,等一以后要用的时候再详细看看吧。

       关于界面包括关于框和关于文字等,其中文字部分采用系统文字,使用CCLabelTTF类,创建时定义一个语句块,在这个区域内文字都是采用kCCTextAlignmentLeft(左对齐)的方式,另外采用Marker Felt字体,接下来就是设置字体的位置和颜色等操作。

       好了,在《Cocos2d-x权威指南》里面的教程的内容也是到这里为止了,到目前为止我也是依葫芦画瓢的学,只着重于代码中一些自己看不懂的内容,真正的整个代码实现功能没有去详细理解。由于更新的问题,在现在的代码中有些发生的变动,所以在我整个工程中代码还是没有编译成功的状态,还好我在网上下到了源码(不过我还是自己一个个代码的敲到自己的工程中)。所以在之后的日子,我会渐渐的完善该工程,并且分享学习过程中的一些知识点,并且截下各种效果图,便于大家理解。

      菜鸟的我,现在还是个菜鸟,但我相信坚持的菜鸟,才是菜鸟中的好菜鸟!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值