cocos2d-x实战项目【果冻冒险】-- 游戏主场景GameScene

本文介绍了Cocos2d-x游戏场景GameScene的创建过程,包括各层如静态层、游戏主层、背景层、设置层等的初始化和挂载。同时详细阐述了键盘事件监听和触摸事件处理,用于控制玩家角色的移动和操作。此外,还涵盖了暂停按钮的回调函数以及游戏暂停和恢复的逻辑。
摘要由CSDN通过智能技术生成
  1. 各个层的创建和挂载
  2. 设置层初始化
  3. 初始化地图
  4. 键盘事件监听、控制玩家操作按钮的触摸监听(触摸按下、触摸持续、触摸抬起)
  5. update实时检测游戏是否被暂停(以便于接触暂停后恢复数据)
  6. 根据按键\按钮左右方向的控制
  7. 各种按钮的回调
#ifndef _GAME_SCENE_H_
#define _GAME_SCENE_H_
#include "cocos2d.h"

USING_NS_CC;

class Hero;
class HudLayer;

class GameScene : public cocos2d::LayerColor
{
   
private:
	bool pause;			            //暂停标识
	cocos2d::Layer* staticLayer;	//静态层 - 基层
	cocos2d::Layer* gameLayer;		//游戏主层--地图层
	cocos2d::Layer* bkLayer;		//背景层-视差层
	cocos2d::Layer* settingLayer;	//设置层
	cocos2d::Layer* weaponLayer;	//特效层
	HudLayer* hudLayer;				//hud层
	cocos2d::Layer* heroLayer;		//英雄层
	cocos2d::Layer* monsterLayer;	//怪物层
	cocos2d::Layer* thingLayer;		//事物层
	Hero* hero;			            //英雄
	bool _left;
	bool _right;

public:
	static int level;
	//根据关卡创建游戏场景:创建出各个层,传给游戏管理者GameManager,然后挂载到其父节点上
	static Scene* createScene(int level);
	virtual bool init();
	CREATE_FUNC(GameScene);
	
	void update(float time);
	//左右方向
	void setLeft(bool left);
	bool isLeft();
	void setRight(bool right);
	bool isRight();

	//暂停层的按钮回调
	void pauseButton(Ref* ref);
	void backButton(Ref* ref);
	void homeButton(Ref* ref);
	void breakButton(Ref* ref);
};
#endif
#include "GameScene.h"
#include "GameManager.h"
#include "StaticData.h"
#include "ConfigData.h"
#include "MapAnalysis.h"
#include "Brick.h"
#include "Hero.h"
#include "MonsterEx.h"
#include "Coin.h"
#include "Fragment.h"
#include "Article.h"
#include "Bird.h"
#include "FlyingEnemy.h"
#include "HudLayer.h"
#include "HelloWorldScene.h"

USING_NS_CC;

//在关卡点击的回调函数中调用
Scene* GameScene::createScene(int level)
{
   
	GameScene::level = level;
	auto scene = Scene::create();
	auto layer = GameScene::create();
	scene->addChild(layer);

	return scene;
}

bool GameScene::init()
{
   
	if (!LayerColor::initWithColor(Color4B(65, 105, 225, 255)))
	{
   
		return false;
	}
	pause = false;	//暂停标识为假

	staticLayer = this;		//游戏静态层
	GameManager::getInstance()->staticLayer = staticLayer;

	gameLayer = Layer::create();	//游戏主层(挂载到游戏静态层)
	GameManager::getInstance()->gameLayer = gameLayer;
	staticLayer->addChild(gameLayer);

	hudLayer = HudLayer::create();	//HUD层(挂载到游戏静态层)
	GameManager::getInstance()->hudLayer = hudLayer;
	staticLayer->addChild(hudLayer);

	settingLayer = Layer::create();	//设置层(挂载到游戏静态层)
	GameManager::getInstance()->settingLayer = settingLayer;
	staticLayer->addChild(settingLayer);


	//视差节点
	ParallaxNode* praNode = ParallaxNode::create();
	bkLayer = Layer::create();		//背景层
	GameManager::getInstance()->bkLayer = bkLayer;
	gameLayer->addChild(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值