有关cocos2d中tilemap在移动时出现黑线的解决方案,我在上一篇文章里已经写过了,这里直接贴上链接:
http://blog.csdn.net/aabbcc729/article/details/54251613
转载请注明出处
后来我又仔细测试了一下,发现fast tilemap的创建不会调用到Sprite里的setTextureCoords方法,
所以不管是修改CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL宏定义还是继承Sprite类重写setTextureCoords方法,都只能解决tilemap移动出现黑线的问题,
对于fast tilemap,我想既然不是通过sprite实现的,那么就是fast tilemap自己实现的。然后参考了Sprite的setTextureCoords方法,到ccFastTMXLayer文件下去找。
果然被我找到了。在updateTotalQuads函数里,
// texcoords
Rect tileTexture = _tileSet->getRectForGID(tileGID);
left = ((tileTexture.origin.x+0.5f) / texSize.width);
right = left + ((tileTexture.size.width-1.0f) / texSize.width);
bottom = ((tileTexture.origin.y+0.5f) / texSize.height);
top = bottom + ((tileTexture.size.height-1) / texSize.height);
修改以上4处就可以了。因为这里没有if+宏定义的判断,直接修改就好了,其实就相当于把原来宏为0的执行语句改为宏为1的执行语句了。建议先看开头提到的文章。
以上就是cocos2d fast tilemap移动出现黑线问题的解决方案。