大佬教程收集整理的这篇文章主要介绍了Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一切之前还是说抱歉,因为本人的确实不会搞美工做的事情,所以素材的图片丑的要死。
先看此界面的效果:
然后源码是:
@H_557_1@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
@H_557_1@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)); //} }
#include "MenuScene.h"
和
//加载完成去下一个场景 Scene* scene = MenuLayer::createScene(); Director::geTinstance()->replaceScene(scenE);
如此在加载图片资源之后就可以自动切换到主界面了。
以上是大佬教程为你收集整理的Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面全部内容,希望文章能够帮你解决Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。