cocos2d-x学习之路(8)--重构项目
2013-06-09 23:15
288 查看
这个项目写到现在所有的功能都在HelloWorldScene中完成,代码非常臃肿,所以需要对代码进行重构:
(1)分离场景和图层
新建两个类GameScene,继承CCScene,负责场景的创建以及对场景中的对象进行管理。GameLayer继承CCLayer负责绘制地图,Hero,战斗动画等
暂时只创建GameMap
自定义类GameMap继承CCTMXTiledMap
部分函数
(1)分离场景和图层
新建两个类GameScene,继承CCScene,负责场景的创建以及对场景中的对象进行管理。GameLayer继承CCLayer负责绘制地图,Hero,战斗动画等
#pragma once #include "header.h" #include "GameLayer.h" using namespace cocos2d; class GameScene : public CCScene { public: GameScene(); virtual ~GameScene(); //用静态方法创建变量 static CCScene *playNewGame(); //初始化 场景 virtual bool init(); //使用COCOS2D-X预定义宏,可以自动释放对象 CREATE_FUNC(GameScene); };
bool GameScene::init() { GameLayer * gameLayer=GameLayer::create(); addChild(gameLayer); return true; } CCScene *GameScene::playNewGame() { CCScene * scene=NULL; do { scene=GameScene::create(); CC_BREAK_IF(!scene); } while (0); return scene; }
#pragma once #include "header.h" #include "GameMap.h" using namespace cocos2d; class GameLayer : public CCLayer { public: GameLayer(); ~GameLayer(); virtual bool init(); CREATE_FUNC(GameLayer); public: //自定义类 继承CCTMXTieldMap GameMap * m_gameMap; };
暂时只创建GameMap
bool GameLayer::init() { m_gameMap=GameMap::gameMapWithTMXFile("1.tmx"); addChild(m_gameMap); }
自定义类GameMap继承CCTMXTiledMap
#pragma once #include "header.h" using namespace cocos2d; typedef enum{ Moveble=0, Wall=1, Enemy=2 }CollisionType; class GameMap : public cocos2d::CCTMXTiledMap { //cocos2d-x自定义宏,相当于声明变量,并且声明Get,Set方法 CC_PROPERTY_READONLY(CCTMXLayer*,floorLayer,FloorLayer); CC_PROPERTY_READONLY(CCTMXLayer*,wallLayer,WallLayer); public: GameMap(); ~GameMap(); //坐标转换 static GameMap * gameMapWithTMXFile(const char * tmxFile); cocos2d::CCPoint positionToCocos2d(cocos2d::CCPoint tileCoord); cocos2d::CCPoint positionToTileCoord(cocos2d::CCPoint cocosCoord );//碰撞检测 CollisionType checkCollision(CCPoint heroPotion);protected: //其他的初始化部分 void extraInit(); //开启抗锯齿 void enableAntiAliasTex(); };
部分函数
GameMap * GameMap::gameMapWithTMXFile(const char * tmxFile) { GameMap * gameMap = new GameMap(); if (gameMap->initWithTMXFile(tmxFile)) { gameMap->extraInit(); gameMap->autorelease(); return gameMap; } CC_SAFE_DELETE(gameMap); return NULL; } void GameMap::extraInit() { enableAntiAliasTex(); floorLayer=this->layerNamed("floor"); wallLayer=this->layerNamed("wall"); } void GameMap::enableAntiAliasTex() { CCArray * pchildArray=this->getChildren(); CCSpriteBatchNode *child=NULL; CCObject * pobject=NULL; CCARRAY_FOREACH(pchildArray,pobject) { child=(CCSpriteBatchNode*)pobject; if(!child) break; child->getTexture()->setAntiAliasTexParameters(); } }
相关文章推荐
- [cocos2d-x学习之路]怎样创建多平台项目
- cocos2d-html5游戏学习之路 plist文件解析
- [转载]cocos2d-x学习笔记3:更改HelloWorld,建立自己的小项目
- SpringBoot学习之路:02.第一个程序Hello World及项目结构介绍
- Android项目重构之路:架构篇
- Android项目重构之路:实现篇
- springcloud学习之路一:项目建立与服务注册中心
- 【Cocos2d-x for WP8 学习整理】(1)创建一个新项目
- 学习Android开源项目-根据知乎日报API分析重构一个简单的知乎日报Android客户端
- javaee学习之路(二十)JDBC项目实战--员工信息存储系统
- Cocos2d-x 3.x学习笔记:猩先生带你打飞机(一)环境与创建项目
- java学习之路 之 面向对象编程-面向对象-第一个小项目P1-FAACS
- Cocos2d-x 3.1.1 学习日志13--物理引擎登峰造极之路
- cocos2dx3.2学习之路之新建项目
- 微软企业库5.0 学习之路——第三步、为项目加上异常处理(采用自定义扩展方式记录到数据库中)
- Android项目重构之路:架构篇
- Android的学习之路(三)项目的启动过程和安装过程详解
- 【OpenResty】项目学习之路
- Android项目重构之路:界面篇
- 学习笔记cocos2d-x之项目分析