前端之家收集整理的这篇文章主要介绍了
(转载)CCTMXTiledMap使用的几个事项,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
转载:
项目中的地图层采用cocos2d-x中的CCTMXTiledMap,我们的整个tile层采用的是一个大整图,然后对里面的tile进行分格子,而且这些tile只有在一个整图上才能使用ccbatchnode 。
CCTMXTiledMap默认是不抗锯齿的,就是采用的是setAliasTexParameters,这一点可以在CCTMXLayer的setupTiles方法里进行设置的
- @H_502_15@@H_502_15@m_pobTextureAtlas->getTexture()->setAliasTexParameters();
使用默认的设置,会有个问题,就是当对地图进行缩放以后,再对map进行移动,这时有些map的tile块会闪动,在android的机器上特别明显,没有办法就改用了抗锯齿操作,没有
修改CCTMXLayer的默认行为,是在外部
修改的
- @H_502_15@#ifndefCC_FIX_ARTIFACTS_BY_STRECHING_TEXEL @H_502_15@
- @H_502_15@#defineCC_FIX_ARTIFACTS_BY_STRECHING_TEXEL1 @H_502_15@
- @H_502_15@#endif@H_502_15@
CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL默认为0,设置为1就
解决了上面说的问题,该
方法应该是对抗锯齿操作的范围做了一个约束,以避免周围像素的干扰。
另外有点让人很意外的是在android机器上,CCTMXTiledMap默认是不抗锯齿的,但是当我按了home键或者其他键,让程序进入
后台,然后再返回
前台的时候,从
效果上来看,CCTMXTiledMap变成抗锯齿了,真心不知道这是怎么回事。。。
还有就是要记得设置为2d投影,
- @H_502_15@@H_502_15@CCDirector*pDirector=CCDirector::sharedDirector();
- @H_502_15@
- @H_502_15@pDirector->setProjection(kCCDirectorProjection2D);
之前遇到过没有使用CCTMXTiledMap,自己实现的瓦片地图的情况,地图分了好几层,一开始图块之间都有白线,后来改成2d投影之后,前面的层的白线消失了,但是后面的层还有。后来发现这个游戏前后层的横向移动速度是不同的,就是比如最上层移动5个像素时,后层可能只移动了2个像素。后来想到之前看过的一个说法说是设置位置的时候,一定要设置为int型,因为即使你设置为浮点型,但是由于像素是整个的,并没有几点几个像素这么一个概念,所以默认设置为的float型就有可能出现白线,果然当在最后设置位置的时候,将float强转为int,那后层的白线也就消失了。。