cocos2dx实战游戏开发之【别踩白块】------主菜单场景的实现

                     【别踩白块】游戏实战开发之主菜单场景

       

             大家好,我是Lampard------是一位从事cocos开发的游戏小白。

             本人经验尚缺,如果各位大牛有更好的建议,欢迎在下方评论,谢谢!!!

             

          今天要介绍的是游戏主菜单场景的实现:

 

            (一)移除HelloWorldScene文件,调整屏幕大小  

            接上一篇博客,当我们打开了所创建的项目之后,在vs左侧的解决方案中,我们可以找到名为src的筛选器,点开发现里面存放着4个文件,分别是HelloWorldScene.h,HelloWorldScene.cpp,AppDelegate.h.AppDelegate.cpp。

              AppDelegate很重要,它负责构建openGL这个我们所能看到的界面,以及存放这一些系统的函数。所以我们把它保留下来,而HelloWorldScene那两个文件则是负责创建一个HelloWorld的界面,没有用,所以我们把它删掉。

            cocos4

           

           然后点开AppDelegate文件,找到designResolutionSize,并把它改成你想要的的屏幕大小。

           我在这个游戏项目中是选择了320*480,这样我们的屏幕大小就已经调整好了。

        cocos6

           

        (二)新建筛选器添加主菜单场景

           为了方便管理,我们可以在解决方案WhiteBlock处点击右键->添加->新建筛选器,并且把筛选器命名为场景类。

           这样就方便我们以后可以创建的场景添加进去并且进行管理。

           紧接着我们就可以右击场景类,新建一个StartLayer.h以及StartLayer.cpp进去了

           cocos5

          

           (三)主菜单场景的实现

         (1).h文件

           首先我们需要定义一个类:StartLayer,这个类是用来展现我们这个主菜单画面的。

          然后在类里面定义三个方法,分别的作用为:创建一个空的场景,填充这个场景,以及静态创建这个类。

#ifndef __StartLayer__H__                        
#define __StartLayer__H__

#include "cocos2d.h"                               // cocos2d的头文件
#include "extensions/cocos-ext.h"

USING_NS_CC;                                       // 使用cocos2d的命名空间
USING_NS_CC_EXT;

class StartLayer : public Layer {
public:
	
	static Scene* createScene();                   // 创建一个场景
	virtual bool init();                           // 填充这个场景
	CREATE_FUNC(StartLayer);                       // 静态创建一个StartLayer类并把它放进自动回收池

private:
	
	Size vsable = Size(320, 480);                  // 屏幕大小

};


#endif 

        (2).cpp文件

         .cpp就是负责来实现头文件中所写的功能,首先是创建一个空的场景,然后在上面填充一个StartLayer菜单层:

#include "StartLayer.h"
#include "extensions/cocos-ext.h"
#include "GameLayer.h"

USING_NS_CC;
USING_NS_CC_EXT;

Scene* StartLayer::createScene()
{
	Scene* scene = Scene::create();                           // 定义一个场景
	StartLayer* startLayer = StartLayer::create();            // 创建一个菜单层 

	scene->addChild(startLayer);                              // 把菜单层加进场景中

	return scene;
}

        然后就是把我们所创建的层进行填充:

       项目文件夹下有一个resource文件夹,里面就是用来存放我们这个游戏项目的资源图片和音乐

      cocos7

       (1)我们把放在里面的一张图片“StartLayerBg”设置为场景的背景精灵

       (2)建立一个菜单按钮,并把两张命名为“start”,“start1”的图片作为菜单项按钮被点击前和点击时的效果图

       (3)最后就是调整菜单按钮的位置并把背景精灵和菜单按钮放进这个StartLayer层中了

bool StartLayer::init()
{
	if (!Layer::init())                                
	{
		return false;
	}

	auto bgSprite = Sprite::create("StartLayerBg.jpg");          // 设置背景图
	bgSprite->setPosition(vsable.width / 2, vsable.height / 2);  // 背景图的位置
	this->addChild(bgSprite);                                    // 把背景图加载进我们的层中

	auto StartItem = MenuItemSprite::create(                     // 一个切换场景的菜单项
		Sprite::create("Start.png"),                             // 被点击前的图片
		Sprite::create("Start1.png"),                            // 被点击后的图片
		[&](Ref * ref) {                                         // 回调函数,用来切换到游戏 
                                                                 // 场景
	   //	Director::getInstance()->replaceScene(GameLayer::createScene()); 
	}
	);
	// 开始按钮

	StartItem->setPosition(160, 60);                             // 放置菜单项位置
	auto menu = Menu::create(StartItem, NULL);                   // 把菜单项加载进菜单  
	menu->setPosition(Point::ZERO);                              // 放置菜单位置
	this->addChild(menu);                                        // 把菜单加进层中

	return true;
}

   至此我们的主菜单场景已经实现,我们看看效果吧:

cocos8

 

                                   

                                                                                                                                                                                                谢谢观看,未完待续......

第一部分:基础篇[1] 第一章要是手机游戏概述,包括游戏概述、手机游戏类型和开发平台的分析;   第二章介绍手机游戏的策划,包括分析玩家需求,编写策划文案,游戏原型的实现。   第三章介绍C、C++编程基础,对于游戏程序员来讲学会C语言是开发各平台游戏的必备语言,本书从实战角度,通过案例方式让读者快速了解C语言和C++语言的语法特点,对于原来从事Java开发的程序员可以快速对比,进而掌握C++语言的使用。   第二部分:Cocos2d-x技术篇   第四章要介绍Cocos2d-x的环境搭建和HelloWorld的项目实现,通过本章读者可以快速上手开发一个最简单的移动游戏UI,并通过该案例以了解Cocos2d-x的运行原理。   第五章要介绍Cocos2d-x核心技术,这里包括Cocos2d-x的核心类CCDirector、CCScene、CCNode、CCLayer、CCSprite、CCAction等,通过案例来介绍Cocos2d-x的场景、图层、交互、动作、动画、粒子效果、游戏地图、物理引擎,并详细介绍了Cocos2d-x 2.2.1版本中所有自带Demo的功能。   第三部分:Cocos2d-x游戏实例篇   第六章用一款完整游戏项目《飞机大战》设计来详解手机游戏开发流程,介绍了游戏进度和游戏菜单实现游戏按键处理与碰撞检测等。   第七章介绍了DeepBlueX引擎,这是对Cocos2d-x的二次封装,通过封装让开发者通过状态机的方式来规划游戏的整体架构,并介绍了通过DeeepBlueX引擎实现了《飞机大战》。   第八章要介绍Cocos2d-x网络编程与网络游戏实现,包括网络游戏模型、使用Apache搭建网络游戏服务器端、使用Cocos2d-x实现Http网络连接、使用BSD Socket实现Socket通讯。   第四部分:产品发布篇   第九章要介绍介绍游戏打包与发布,包括发布游戏要准备的项目、制作游戏介绍文档和图标、以及如何寻找发布渠道。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值