一切之前还是说抱歉,因为本人的确实不会搞美工做的事情,所以素材的图片丑的要死。
先看此界面的效果:
然后源码是:
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 实战之—— 重写《超级马里奥》其八 主菜单界面所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)