1. tiledmap

TMX: Only 1 tileset per layer is supported

多个图层可以来自于一个图块,一个图层只能来自于一个图块。

Tiled软件没有这个限制,如果需要让cocos2dx能够支持一个图层有多个图块,需要自己修改。

我的方案是不修改cocos2dx的这个限制,而是同一图层的不同图块根据图块名字自动新建图层,把不属于该层的瓦片删掉,并放在其对应新图层上。

加载完毕之后再自行调整zorder。

有时间再研究让它支持一个图层支持多个图块

position convert to tile index

Isometric(等距地图)

可以从CCPoint CCTMXLayer::positionForIsoAt(const CCPoint& pos)函数中看到从瓦片坐标到实际坐标的转换
容易发现瓦片的坐标点是菱形瓦片左边的顶点
解这个xy的方程可以得到一个大概的从实际坐标转换到瓦片坐标的公式
这个反向转换不够精确
int h = (_tileMap->getMapSize().height * 2 + _tileMap->getMapSize().width -3)/2.0 - position.x/_tileMap->getTileSize().width - position.y/_tileMap->getTileSize().height;
int w = (_tileMap->getMapSize().height * 2 - _tileMap->getMapSize().width - 1)/2.0 + position.x/_tileMap->getTileSize().width - position.y/_tileMap->getTileSize().height;
return CCPoint(w, h); 

support tile offset

cocos2dx 2.1.5不支持瓦片地图图块的偏移,可以稍作修改来支持他
class CC_DLL CCTMXTilesetInfo : public CCObject
{
public:std::string     m_sName;unsigned int    m_uFirstGid;CCSize          m_tTileSize;CCSize          m_tTileOffset;...
};
CCTMXTilesetInfo::CCTMXTilesetInfo():m_uFirstGid(0),m_tTileSize(CCSizeZero), m_tTileOffset(CCSizeZero)
...
{
}
void CCTMXMapInfo::startElement(void *ctx, const char *name, const char **atts)
{...else if (elementName == "tileoffset"){CCTMXTilesetInfo* tileset = (CCTMXTilesetInfo*)pTMXMapInfo->getTilesets()->lastObject();CCSize s;s.width = (float)atof(valueForKey("x", attributeDict));s.height = (float)atof(valueForKey("y", attributeDict));tileset->m_tTileOffset = s;}...
}
void CCTMXLayer::setupTileSprite(CCSprite* sprite, CCPoint pos, unsigned int gid)
{CCPoint np = positionAt(pos);np.x += m_pTileSet->m_tTileOffset.width;np.y -= m_pTileSet->m_tTileOffset.height;sprite->setPosition(np);...
}

2.PVR support

cocos2d: WARNING: unsupported pvr pixelformat

cocos2dx据说默认支持mac下texturetool生成的pvr图片,但鄙人没有苹果电脑,故使用PVRTexTool来生成pvr图片
在windows测试时,发现cocos2dx并不支持pvrtc格式,仅支持九种,android和ios没有测试
/* supported channel type formats */
#define kPVR3TexturePixelFormat_BGRA_8888  0x0808080861726762ULL
#define kPVR3TexturePixelFormat_RGBA_8888  0x0808080861626772ULL
#define kPVR3TexturePixelFormat_RGBA_4444  0x0404040461626772ULL
#define kPVR3TexturePixelFormat_RGBA_5551  0x0105050561626772ULL
#define kPVR3TexturePixelFormat_RGB_565    0x0005060500626772ULL
#define kPVR3TexturePixelFormat_RGB_888    0x0008080800626772ULL
#define kPVR3TexturePixelFormat_A_8        0x0000000800000061ULL
#define kPVR3TexturePixelFormat_L_8        0x000000080000006cULL
#define kPVR3TexturePixelFormat_LA_88      0x000008080000616cULL
所以使用PVRTexTool转换图片时制定它支持的格式比如RGBA8888,如下
PVRTexToolCL -i grassland.png -f r8g8b8a8
想要变成pvr.ccz,只要用winRar用zlib压缩,后缀名改成pvr.ccz。

cocos2dx学习小结相关推荐

  1. Python - 输出格式 (学习小结)

    Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 ​关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...

  2. Page 的生命周期学习小结

    (以前我在 csdn 写的翻译文章,现在转到这里来.) Page 的生命周期学习小结 原文链接:Page Events: Order and PostBack 作者:Paul Wilson 翻译:木野 ...

  3. c语言基本类型学习小结

    基本类型学习小结 环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项 基本类型包括字节型(char).整型(int)和浮点型(float/double). 定 ...

  4. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  5. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

  6. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

  7. cocos2d-x学习笔记15:cocos2d-x教程资源总结

    注:cocos2d可作为cocos2dx的参考,两者接口很相似. 名称:知易的<知易Cocos2D-iPhone开发教程> 官方地址:http://blog.sina.com.cn/s/a ...

  8. cocos2d-x学习笔记16:记录存储1:CCUserDefault

    cocos2d-x学习笔记16:记录存储1:CCUserDefault 一.简述 CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录 ...

  9. pthread多线程编程的学习小结

    pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 -- DevStore p ...

最新文章

  1. numpy 笔记:setdiff1d
  2. [CLPR] 定位算法探幽 - 边缘和形态学
  3. php网站灰颜色代码,css取消Safari浏览器链接点击颜色变灰-webkit-tap-highlight-color_html/css_WEB-ITnose...
  4. Node — 第四天(Promise与路由)
  5. English最俗语法大全
  6. [ES6] 细化ES6之 -- 数组的扩展
  7. JAVA之多线程概念及其几种实现方法优劣分析
  8. 由于焦点冲突导致TextView的跑马灯效果和EditText不能共存的问题
  9. html组合标题,如何组合标题关键词(影响标题的5个因素)
  10. ZZULIOJ:1044: 不及格率
  11. 00 SQL课程简介
  12. 注册表去掉多余的安全删除硬件图标
  13. 简单讲解前序遍历,中序遍历,后序遍历和层次遍历
  14. slmgr命令是windows系统软件授权管理工具主要是用来查看系统的激活状态、以及密钥许可证等信息
  15. 对网易云音乐参数(params,encSecKey)的分析
  16. 香港银行开户过程需要注意些什么
  17. Directory常用方法,不积硅步无以至千里
  18. perl c语言,perl简介(适合对c语言有点认识的读者)_perl教程
  19. PHP防伪防串货溯源系统源码
  20. 〖Python自动化办公篇⑯〗 - PPT 文件自动化 - PPT 段落的使用

热门文章

  1. java ee 下载_javaee.jar下载-javaee.jar包下载 --pc6下载站
  2. 【OCR技术系列之一】字符识别技术总览
  3. 计算机主机面板上的reset,一但中了IE窗口炸弹马上按下主机面板上的Reset键,重起计算机是对的吗...
  4. Raptor实践参考:求圆周长
  5. 详解微信「看一看」多模型内容策略与召回
  6. samba服务器配置与常见的故障解决
  7. python scripts文件夹里面没有pip.exe怎么办?
  8. chrome拓展以及油猴脚本推荐
  9. React中input的失焦问题
  10. 新春限定:新红包封面项目