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===