2

我正在尝试创建一个与游戏一起流动的背景。但是图像不是连续的。每个图像加载之间都有一个空格。我希望图像继续循环。

这是创建精灵的方法

CCSprite *sprite = [CCSprite spriteWithFile:@"Image.png" rect:CGRectMake(0, 0, 960, 640)];

ccTexParams tp = {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT};

[sprite.texture setTexParameters:&tp];
sprite.anchorPoint = ccp(1.0f/8.0f, 0);
sprite.position = ccp(screenW/8, 0);

更新精灵位置的方法。

- (void) setOffsetX:(float)offsetX {
if (_offsetX != offsetX) {
_offsetX = offsetX;
CGSize size = _sprite.textureRect.size;
_sprite.textureRect = CGRectMake(_offsetX, 0, size.width, size.height);
}
}

请提供任何帮助

4

2 回答 2

3

您的图像宽度需要是 2 的幂。即宽度必须是 64、128、256、512 等,如果你想让它重复的话

您看到的差距是 OpenGL 为您的纹理填充了空白空间以使其成为 2 的幂。

于 2011-09-11T08:28:20.333 回答
1

尝试几次后,最好的方法是确保精灵尺寸是 2 的幂。这将确保您可以缩放图层并且一切正常。如果您不打算缩放图层,那么您可以使用任何大小的精灵并使用它:

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D];

http://ak.net84.net/iphone/gap-between-sprites-when-moving-in-cocos2d/

于 2011-12-28T14:19:28.000 回答