cocos2d-x 使用Tiled编辑的游戏地图 - 学习笔记

Tiled Map Editor 是C++开发的一套地图编辑器,下载/官网地址:http://www.mapeditor.org/

编辑后生成的tmx文件可以被cocos2dx调用,为游戏地图设计提供了很大便利;

推荐这位仁兄发布的教程,也是三个部分组成:

参考过这位仁兄发布的教程,第一篇tiledMap使用入门受益很多,后两篇在功能实现,算法和代码上都略有些生涩,决定自己进行一些实现;

====================以下记录一些学习笔记=======================

CCTMXTiledMap *_tileMap = CCTMXTiledMap::create("path"); //引入tmx的地图,将tmx和相关资源文件拷贝到res目录下,修改tmx文件中的图片资源引入路径

CCTMXObjectGroup *objectGroup = _tileMap->objectGroupNamed("hero"); //获取tmx文件中的对象层
CCDictionary *spawnPoint = objectGroup->objectNamed("pa"); //获取对象层中的对象

const CCString *x = spawnPoint->valueForKey("x"); //获取对象的属性,放回CCString , 注: C++中属性需用双引号,若用单引号,则调试出现assertion failure的报错;

int px = (CCString*)x->intValue();//将CCString 转换为int的方法,转成float类型有 floatValue()方法;

// *响应点击事件的另一方法: 头文件中声明

virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

// *init中添加触摸事件的委派

ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); //可获得拖动事件 pTouch->getPreviousLocation() 上一点坐标, pTouch->getLocation() 当前点坐标

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);

// * 定义函数 ccTouchBegan之间返回true;  

// * ccTouchEnded中cocos2d::CCPoint tp = pTouch->getLocation(); 即可获得点击位置的坐标;

//sprite 未初始化,直接runAction会报内存读取冲突;

//关于角色移动时修改移动动画:如果在init中初始好4个方向的_animateN,在改变方向时直接调用_player->runAction(CCRepeatForever::actionWithAction(_animateN)); 会报出内存冲突错误; 后来的解决的办法是在init中缓存纹理,改变方向时调用纹理动态创建帧动画,然后封装这个创建移动动画的函数;

//Tiled Map 卷屏时出现黑边的解决办法,在CCConfig中将此处0改成1

#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1

 

===continue===

你可能感兴趣的:(cocos2d-x)