Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面

Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面,第1张

概述一切之前还是说抱歉,因为本人的确实不会搞美工做的事情,所以素材的图片丑的要死。 先看此界面的效果: 然后源码是: MenuScene.h /*** 主菜单场景的声明*/#ifndef __MENU_SCENE_H__#define __MENU_SCENE_H__#include "cocos2d.h"USING_NS_CC;/*** 定义一个MenuLayer类继承自Laye

一切之前还是说抱歉,因为本人的确实不会搞美工做的事情,所以素材的图片丑的要死。

先看此界面的效果:



然后源码是:

MenuScene.h

/*** 主菜单场景的声明*/#ifndef __MENU_SCENE_H__#define __MENU_SCENE_H__#include "cocos2d.h"USING_NS_CC;/*** 定义一个Menulayer类继承自Layer类*/class Menulayer : public Layer{public:	/**	* 构造函数	*/	Menulayer();	/**	* 析构函数	*/	virtual ~Menulayer();	/**	* 创建当前场景并加入Menulayer层	*/	static Scene* createScene();	/**	* 初始化Menulayer层	*/	virtual bool init();	/**	 * 去主游戏场景	 */	voID goToMainGameScene(Ref* pSender);	/**	* 创建Menulayer层	*/	CREATE_FUNC(Menulayer);};#endif

MenuScene.cpp

/** *  主菜单场景的实现 */#include "MenuScene.h"#include "VisibleRect.h"/*** 构造函数,一般用来初始化变量*/Menulayer::Menulayer(){}/*** 析构函数,一般用来释放内存*/Menulayer::~Menulayer(){}/*** 创建场景,加入Menulayer层*/Scene* Menulayer::createScene(){	Scene* scene = Scene::create();	Menulayer *layer = Menulayer::create();	scene->addChild(layer);	return scene;}/*** 初始化 Menulayer*/bool Menulayer::init(){	if (!Layer::init())	{		return false;	}	//加载资源	SpriteFrameCache::getInstance()->addSpriteFramesWithfile("imageResource.pList","imageResource.png");	//加入背景页	Sprite *bg = Sprite::createWithSpriteFramename("menu_bg.png");	bg->setposition(VisibleRect::center());	this->addChild(bg);	//添加游戏名称包括闪光效果	Sprite *gamename = Sprite::createWithSpriteFramename("Title.png");	Size clipSize = gamename->getContentSize();	Sprite* spark = Sprite::createWithSpriteFramename("shark.png");	spark->setposition(-clipSize.wIDth,0);	//裁剪	ClipPingNode* clipPingNode = ClipPingNode::create();	clipPingNode->setAlphaThreshold(0);	clipPingNode->setContentSize(clipSize);	clipPingNode->setposition(VisibleRect::center() + Point(0,90));	clipPingNode->setStencil(gamename);	clipPingNode->addChild(gamename,1);	clipPingNode->addChild(spark,2);	this->addChild(clipPingNode);	//闪光的动作	Moveto* moveAction = Moveto::create(2.0f,Point(clipSize.wIDth,0));	Moveto* moveBackAction = Moveto::create(2.0f,Point(-clipSize.wIDth,0));	Sequence* seq = Sequence::create(moveAction,moveBackAction,NulL);	RepeatForever* repeatAction = RepeatForever::create(seq);	spark->runAction(repeatAction); 	//开始按钮	Sprite *beginNomal = Sprite::createWithSpriteFramename("begin_normal.png");	Sprite *beginpressed = Sprite::createWithSpriteFramename("begin_pressed.png");	MenuItemSprite* startGameItem = MenuItemSprite::create(beginNomal,beginpressed,CC_CALLBACK_1(Menulayer::goToMainGameScene,this));	startGameItem->setposition(VisibleRect::center().x,VisibleRect::center().y);	startGameItem->setTag(10);	//继续按钮	Sprite *goOnNomal = Sprite::createWithSpriteFramename("go_on_normal.png");	Sprite *goOnpressed = Sprite::createWithSpriteFramename("go_on_pressed.png");	MenuItemSprite* goOnItem = MenuItemSprite::create(goOnNomal,goOnpressed,this));	goOnItem->setposition(VisibleRect::center().x,VisibleRect::center().y * 0.75f);	goOnItem->setTag(11);	//菜单	Menu* menu = Menu::create(startGameItem,goOnItem,NulL);	menu->setposition(Point::ZERO);	this->addChild(menu,1);		return true;}/** * 去主游戏界面 */voID Menulayer::goToMainGameScene(Ref* pSender){	Scene* scene = nullptr;	Node* node = (Node*)pSender;	int tag = node->getTag();	switch (tag){		case 10:{			//重新开始的设置配置			break;		}		case 11:{			//继续关卡的数据配置			break;		}	}	//进入新场景,这里因为还没写所以先空着	//if (scene){	//	Director::getInstance()->replaceScene(TransitionFade::create(0.5,scene));	//}}

然后别忘了在LoadScene.cpp里面加入以下代码用于场景切换


#include "MenuScene.h"


//加载完成去下一个场景Scene* scene = Menulayer::createScene();Director::getInstance()->replaceScene(scene);

位置如图:



如此在加载图片资源之后就可以自动切换到主界面了。

总结

以上是内存溢出为你收集整理的Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面全部内容,希望文章能够帮你解决Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1027549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存