这是我的cocos代码:
class Startbox(Layer):
def __init__(self):
Layer.__init__(self)
self.batch = BatchNode()
self.add(self.batch)
img = pyglet.image.load('images/map_sprites.png')
tileset = pyglet.image.ImageGrid(img, 3, 15, 96, 96)
x, y = 0, 0
for i in range(10):
for j in range(10):
spr = Sprite(tileset[1])
spr.x = x
spr.y = y
self.batch.add(spr)
x += 96
y += 96
x = 0
我正在尝试获取精灵并且并排显示以覆盖窗口。 该代码产生错误的结果,瓷砖之间有一个空格,如下所示:
我不明白为什么会这样,或者如何修复它。下面的pyglet代码基本上做了同样的事情,但精灵排列正确,没有创建任何黑线:
class screen(pyglet.window.Window):
def __init__(self, w, h):
super(screen, self).__init__(w, h)
sprite_sheet = grid(pyglet.image.load("images/map_sprites.png"), 3, 15)
self.batch = pyglet.graphics.Batch()
self.all_sprites = []
x, y = 0, 0
for i in range(10):
for j in range(10):
sprite = pyglet.sprite.Sprite(sprite_sheet[1], batch=self.batch)
sprite.x = x
sprite.y = y
self.all_sprites.append(sprite)
x += 96
y += 96
x = 0
编辑:我找到了解决方案,并希望将其作为答案发布,以便将来有人偶然发现,但我想编辑我的OP就足够了。
来自Cocos2d Google groups列表中的 Claudio Canepa :
您可以尝试在director.init调用中传递do_not_scale = True,这将使用更适合切片的ortographic投影。
您可以在脚本中查看cocos tilemaps的示例 test_tiles.py
test_tmx.py
test_platformer.py
实施非常简单:
if __name__ == '__main__':
director.init(width, height, do_not_scale=True)
director.run(Scene(Startbox()))
答案 0 :(得分:1)
在cocos2d的python版本中不起作用,但在iPhone版本的cocos2d中观察到相同。所以这可能会有所帮助: -
«如果使用Zwoptex创建SpriteSheet,则将精灵间距间隔添加到2px +。
«编辑ccConfig.h文件并定义此
#ifndef CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL
#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1
#endif
请参阅我的答案:Thread in Stackoverflow