cocos2dx休闲游戏--Fruit & Bird 开发学习(1)

游戏架构:

     一、 场景管理类 GameSceneManager:

             在对一个游戏进行场景切换时,可以定义一个单独的类(eg:GameSceneManager类),来管理其他场景的切换。

             该类的主要作用是管理各个场景,同时需要用该类创建第一个场景(即第一次进入游戏的场景),并实现从当前场景跳转到其他场景的方法。

             优点:游戏中众多的场景集中到一个类中不但程序结构清晰而且维护简单。

     在该游戏中,场景管理类,主要实现9个场景的切换:主布景类MainLayer,帮助布景类,设置布景类,排行榜布景类(进击的小鸟和水果大逃亡),关于布景类,选择游戏布景类,“进击的小鸟“布景类,“水果大逃亡”布景类


GameSceneManager.h文件

#ifndef  __GAME_SCENE_MANAGER_H__
#define __GAME_SCENE_MANAGER_H__

#include "cocos2d.h"

USING_NS_CC;

class GameSceneManager//场景管理类,数据成员主要是一些指向场景的指针;成员函数则是跳转到相应场景的方法
{
public:
	Scene* mainScene;
	Scene* gameScene;
	Scene* birdScene;
	Scene* fruitScene;
	Scene* musicScene;
	Scene* rankScene;
	Scene* aboutScene;
	Scene* helpScene;

public:
	void createMainScene();
	void goToFlappyScene(int);//切换到“进击的小鸟”游戏界面的方法
	void goToSquishyScene(int);//切换到“水果大逃亡”游戏界面的方法
	void goToGameScene();
	void goToMainScene();
	void goToSetScene();
	void goToRankBirdScene();
	void goToAboutScene();
	void goToHelpScene();
};
#endif

说明:场景管理类头文件,数据成员主要是指向其他场景的指针;成员函数则是跳转到其他场景的方法。特别说明函数createMainScene是创建游戏中的第一个场景方法。


成员函数:createMainScene的实现;

void GameSceneManager::createMainScene()
{
	mainScene = Scene::create();//创建一个场景节点
	MainLayer* layer = MainLayer::create();//创建主菜单布景层
	layer->sceneManager = this;//将MainLayer中的公有数据成员指向场景管理器类(this),那么在MainLayer中,就可以使用sceneManager这个指针切换到其他场景
	mainScene->addChild(layer);//将主菜单布景层添加到场景中
}
说明:该方法用来创建游戏的第一个场景,函数中MainLayer其实就是主菜单布景类(下一小节单独列出该类的实现)


跳转到其他场景方法的实现(此处列举2个场景跳转的方法)

void GameSceneManager::goToMainScene()//切换到主界面的方法
{
	Director::getInstance()->setDepthTest(true);//开启深度检测,
	mainScene = Scene::create();
	MainLayer* layer = MainLayer::create();
	layer->sceneManager = this;
	mainScene->addChild(layer);

	auto ss = TransitionFade::create(1.0f, mainScene);
	Director::getInstance()->replaceScene(ss);
}

切换到“进击的小鸟”排行榜场景的方法

void GameSceneManager::goToRankBirdScene()
{
	Director::getInstance()->setDepthTest(true);
	rankScene = Scene::create();
	RankBirdLayer* layer = RankBirdLayer::create();
	layer->sceneManager = this;
	rankScene->addChild(layer);

	auto ss = TransitionPageTurn::create(1.0f, rankScene, false);
	Director::getInstance()->replaceScene(ss);
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值