我在 illustrator 上创建了一个圆角矩形并导出到 png 中,然后将此图像添加到 texturepacker 并导入到 cocos2d 这是我的矩形,你知道为什么角落上有白色像素吗?
这是图片https://dl.dropboxusercontent.com/u/9018754/Screen%20Shot%202014-07-31%20at%2023.28.52.png
我在 illustrator 上创建了一个圆角矩形并导出到 png 中,然后将此图像添加到 texturepacker 并导入到 cocos2d 这是我的矩形,你知道为什么角落上有白色像素吗?
这是图片https://dl.dropboxusercontent.com/u/9018754/Screen%20Shot%202014-07-31%20at%2023.28.52.png
可能是图像被写为 png8,并在 Illustrator 中混合为白色背景。您还可以发布您从 Illustrator 创建的 png 吗?
- 更新 -
图像看起来不错。我认为我们可以排除导出图像的问题。
在您的设置中,“预乘 Alpha”已关闭。将图片导入cocos2d时,是否开启了premultipled alpha?两个值必须匹配。否则你会得到一些奇怪的行为。
如果它在 TexturePacker 中打开而在 cocos2d 中关闭,你会得到黑色轮廓。如果它在 TexturePacker 中关闭而在 cocos2d 中打开,您会得到白色轮廓。
所以:尝试在 TexturePacker 中启用它。
是的 Premultiply Alpha 解决了我的问题
将 ccConfig.h 更改为
#ifndef CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL
#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1
#endif
并设置 premultiply alpha + exclude 1 解决了我的问题,
写在注释行
**
`如果启用,将使用以下公式计算纹理坐标:
- texCoord.left = (rect.origin.x*2+1) / (texture.wide*2);
- texCoord.right = texCoord.left + (rect.size.width*2-2)/(texture.wide*2);
底部和顶部相同。
此公式通过使用 99% 的纹理来防止伪影。
防止伪影的“正确”方法是使用 spritesheet-artifact-fixer.py 或类似工具。
受影响的节点:
- CCSprite / CCSpriteBatchNode 和子类:CCLabelBMFont、CCTMXLayer
- CCLabelAtlas
- CCParticleSystemQuad
- CCTileMap
启用将其设置为 1。默认情况下禁用。
**
我现在不知道发生了什么,但我会更深入地检查代码,
谢谢安德烈亚斯·勒夫