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

       

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

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

             

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

 

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

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

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

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

           

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

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

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

           

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

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

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

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

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

          

           (三)主菜单场景的实现

         (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文件夹,里面就是用来存放我们这个游戏项目的资源图片和音乐

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

       (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;
}

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

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

 

                                   

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

相关文章: